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或属性

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....