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

generate the id of a navigation property without the full path

我有一个 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">

如何在没有完整路径 class 名称和导航 class 名称的情况下呈现? 即

<select id="FieldId2" name="FieldId2">

<select id="FieldId2" name="MyClass_NavigationClass_FieldId2">

仍然使用 lambda 表达式

我知道我可以在视图中对 id 进行硬编码,但我仍然想使用 DropDownListFor 例如

 @Html.DropDownListFor(model => model.NavigationClass.FieldId2,Viewbag["MySelectList"]) 

或类似的东西

首先你的DropDownListFor()方法没有生成

<select id="MyClass_NavigationClass_FieldId2" name="MyClass_NavigationClass_FieldId2">

居然在发电

<select id="NavigationClass_FieldId2" name="NavigationClass.FieldId2">

并且您不想更改 name 属性,因为它不会在您提交表单时绑定到您的模型。

但是,您可以通过使用接受 htmlAttributes

的重载来更改 id 属性以在 jQuery 函数中使用
@Html.DropDownListFor(m => m.NavigationClass.FieldId2, Viewbag["MySelectList"], new { id = "FieldId2" })

这将生成

<select id="FieldId2" name="NavigationClass.FieldId2">