如何在asp .net MVC3中为EditorFor()html助手设置Id

时间:2011-12-21 11:07:31

标签: asp.net-mvc-3 editorfor

我用它来覆盖框架生成的身份@Html.EditorFor(model => model.cost, new { id = "checkCost" })
但遗憾的是id并没有改变。即当我使用时string d = Request.Form["checkCost"];
在控制器动作中,然后字符串填充空值。
为什么?我还用TextBoxFor替换了EditorFor,但没有改变,那么控制器也将成本作为ID

<td >
        @Html.DropDownList("check_master", "--select package--")
    </td>
    <td >
        @Html.EditorFor(model => model.check_name)
        @Html.ValidationMessageFor(model => model.check_name)
    </td>
    <td >
        @Html.EditorFor(model => model.cost, new { id ="checkCost" })
        @Html.ValidationMessageFor(model => model.cost)
    </td>



更新

  • 这是我的局部视图,我的主视图(从ajax.actionLink呈现部分)也包含EditorFor(model =&gt; mode.cost)
  • 部分视图强类型为Check_master表,主视图强类型为package_master,其中entitySet保持同名属性,即“COST”其次,部分和主视图都保持EditorFor“cost”

    我试图通过
  • 更改check_master属性的名称
  • [柱( “check_cost”)]

公共可空费用{get;组;但是不知道为什么这不起作用,即属性naem并没有改变,而是像

那样引用它
model.something 

2 个答案:

答案 0 :(得分:0)

使用CheckCost和PackageCost属性创建2个视图模型,这样就有了分离:

public class CheckViewModel{
   public string CheckCost{get;set;}
}

public class PackageViewModel{
   public string PackageCost{get;set;}
}

这样可以避免冲突。

答案 1 :(得分:0)

要专门回答问题,请尝试:

@Html.EditorFor(model => model.cost, new { @id = "checkCost" })

注意轻微(但很重要)的差异:......新{@id =&#34; checkCost&#34; })