C# HtmlFieldPrefix未映射到模型

C# HtmlFieldPrefix未映射到模型,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,您好,我最近开始开发一个基于JQuery/JQueryUI的ASP.Net网站。其想法是只有一个页面,其余内容是动态的,等等,通过对话框和ajax加载进来 但是,问题是,当同一模型的创建和编辑表单在对话框中同时打开时,一些JQueryUI小部件(如DatePicker)停止工作,因为这些表单会导致DOM在两个对话框中的字段上都有重复的id 因此,我尝试在控制器上使用以下代码: ViewData.TemplateInfo.HtmlFieldPrefix = "Create"; // or Edit

您好,我最近开始开发一个基于JQuery/JQueryUI的ASP.Net网站。其想法是只有一个页面,其余内容是动态的,等等,通过对话框和ajax加载进来

但是,问题是,当同一模型的创建和编辑表单在对话框中同时打开时,一些JQueryUI小部件(如DatePicker)停止工作,因为这些表单会导致DOM在两个对话框中的字段上都有重复的id

因此,我尝试在控制器上使用以下代码:

ViewData.TemplateInfo.HtmlFieldPrefix = "Create"; // or Edit etc
这解决了DatePicker问题,但是当字段被发回控制器时,它们不再映射到模型


有人知道如何修复此问题吗?

您可以在绑定回时尝试指定相同的前缀:

[HttpPost]
public ActionResult Create([Bind(Prefix = "Create")] CreateViewModel model)
{
    ...
}

对于存在相同问题的任何人,您也可以将模型重命名为“创建”,如下所示:

[HttpPost]
public ActionResult Create(CreateViewModel create)
{
    ...
}
我觉得这看起来不错,但有点冒险。如果其他开发人员或您决定稍后更改参数名称,则表单将中断,这并不理想

我发现这是因为我的一个表单绑定正确,而另一个没有。一个以前缀作为参数名,另一个只是“model”