html helper - 如何去掉 name 属性?

html helper - how do I get rid of the name attribute?

我有一个强类型的局部视图。该模型有一个 属性,它是 Active Directory 中的用户列表,由一个名为 ADUser.

的 class 表示

我有一个部分视图代表此 属性 的下拉列表。虽然我将这个下拉列表的值用于其他一些事情,但我不需要提交它的值,所以我想我应该删除 name 属性。然而,一旦 Html 加载,name 属性总是设置为 Html 助手想要分配给它的。有没有一种方法可以删除该属性,以便不提交下拉列表的值?

在我的主要部分视图中(_adusers 是列表的名称):

<%: Html.Partial("ADUserDropDown", Model._adusers)%>

在我的下拉列表的部分视图中:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<MyProject.Models.ADUser>>" %>

<%= Html.DropDownList("", new SelectList(Model, "ValueText", "DisplayText"), new { name = "", size = "12" })%>
<input type=button value="Search..." />
<input type=button value="Close" />

这导致:

<select name="_master" size="12">

_master 是父模型的名称。如果我在 Html.DropDownList 的第一个参数中添加一些内容,结果是:

<select name="_master.WhateverINamedIt" size="12">

我想达到:

<select size="12">

那么使用 HTML 助手就没有意义了。您可以将局部视图的代码更改为:

<select size="12">
@foreach(var item in Model)
{
    <option value="@item.ValueText">@Html.DisplayFor(m => item.DisplayText)</option>
}
</select>

但是,如果您想坚持使用 DropDownList 助手,html 属性中的名称参数必须使用 大写字母 指定:

<%= Html.DropDownList("", new SelectList(Model, "ValueText", "DisplayText"),
    new { Name = string.Empty, size = "12" })%>

作为替代方案,您可以使用 jQuery:

删除名称
$('[name="_master.WhateverINamedIt"]').removeAttr('name');

不喜欢或不使用 jQuery,普通的 javascript 就可以了:

document.getElementsByName('_master.WhateverINamedIt')[0].removeAttribute('name');