asp.net-mvc-3 – 当调用Controller.PartialView时,ASP.NET MVC3添加一个HtmlFieldPrefix

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 当调用Controller.PartialView时,ASP.NET MVC3添加一个HtmlFieldPrefix前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将渲染部分视图作为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没有前缀。在控制器中的Action中调用PartialView时是否有设置前缀?

解决方法

更好的是,您可以在控制器动作中设置ViewData.TemplateInfo.HtmlFieldPrefix,
public Actionresult MyAction()
{
   ...
   ViewData.TemplateInfo.HtmlFieldPrefix = "MyPrefix";

   return PartialView("MyView",viewmodel);
}

视图模型中不需要ViewBag或属性

猜你在找的asp.Net相关文章