生成没有完整路径的导航属性的id

时间:2015-12-03 10:24:07

标签: asp.net-mvc asp.net-core asp.net-core-mvc

我有一个带有以下代码的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"]) 

或类似的东西

1 个答案:

答案 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">