我有一个带有以下代码的ASP.NET 5 RC1项目:
型号:
public class MyClass
{
public int Id { get; set; }
public NavigationClass NavigationClass { get; set; }
}
public class NavigationClass
{
public int Id { get; set; }
public in FieldId2 FieldId2 { get; set; }
}
查看
@model MyClass
@Html.DropDownListFor(model => model.NavigationClass.FieldId2,Viewbag["MySelectList"])
呈现为
<select id="MyClass_NavigationClass_FieldId2" name="MyClass_NavigationClass_FieldId2">
如何在没有完整路径类名和导航类名的情况下进行渲染? 即
<select id="FieldId2" name="FieldId2">
或
<select id="FieldId2" name="MyClass_NavigationClass_FieldId2">
仍然使用lambda表达式
我知道我可以在视图中对id进行硬编码,但我仍然想使用
DropDownListFor
例如
@Html.DropDownListFor(model => model.NavigationClass.FieldId2,Viewbag["MySelectList"])
或类似的东西
答案 0 :(得分:1)
首先,您的DropDownListFor()
方法未生成
<select id="MyClass_NavigationClass_FieldId2" name="MyClass_NavigationClass_FieldId2">
实际上正在生成
<select id="NavigationClass_FieldId2" name="NavigationClass.FieldId2">
并且您不想更改name
属性,因为在提交表单时它不会绑定到您的模型。
但是,您可以使用接受id
的重载来更改htmlAttributes
属性以在jQuery函数中使用
@Html.DropDownListFor(m => m.NavigationClass.FieldId2, Viewbag["MySelectList"], new { id = "FieldId2" })
将生成
<select id="FieldId2" name="NavigationClass.FieldId2">