我将呈现一个部分视图作为Ajax请求的一部分。
当我从视图中调用分部视图时:
int i=0;
foreach(var rule in Model.Rules) {
@Html.Partial("ValidationRuleRow", rule, new ViewDataDictionary {
TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = string.Format("Rules[{0}]", i) } })
i++;
}
我可以将HtmlFieldPrefix设置为允许正确的模型绑定。
我希望用户能够通过ajax动态添加新的ValidationRuleRow,如:
$.ajax({
type: "GET",
url: "/Monitors/NewMonitorValidationRule",
success: function (data, textStatus, jqXHR) {
var element = $(data);
$("#ValidationRuleContainer").append(element);
}
});
所以我在我的控制器中有一个动作来获取HTML:
public ActionResult NewMonitorValidationRule()
{
ValidationRule rule = new ValidationRule{Id = TempSurrogateKey.Next};
var view = PartialView("ValidationRuleRow", rule);
// CODE TO SET PartialView field prefix
return view;
}
返回的HTML没有前缀。当从控制器中的操作调用PartialView时,有没有设置前缀的方法?
发布于 2015-05-03 23:11:22
更好的是,您可以在控制器操作中设置ViewData.TemplateInfo.HtmlFieldPrefix,
public Actionresult MyAction()
{
...
ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";
return PartialView("MyView", viewmodel);
}
视图模型中不需要ViewBag或属性。
发布于 2011-07-08 06:25:27
您可以将此信息作为视图模型的一部分进行传递:
public ActionResult NewMonitorValidationRule()
{
ValidationRule rule = new ValidationRule{Id = TempSurrogateKey.Next};
// CODE TO SET PartialView field prefix
rule.MyPrefix = "Rule[153]";
return PartialView("ValidationRuleRow", rule);
}
在局部视图ValidationRuleRow.cshtml
中,使用此视图模型属性来设置前缀:
@{
if (!string.IsNullOrEmpty(Model.MyPrefix))
{
ViewData.TemplateInfo.HtmlFieldPrefix = Model.MyPrefix;
}
}
https://stackoverflow.com/questions/6617768
复制相似问题