請糾正我,如果我錯了,但據我知道這個 情況下,@ Html.EditorFor將創建一個 相同元素的id多個元素。不是嗎?
呃,沒有。
型號:
public class Book
{
public int Id { get; set; }
public bool Selected { get; set; }
}
控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new Book { Id = 1, Selected = false },
new Book { Id = 2, Selected = true },
new Book { Id = 3, Selected = false },
};
return View(model);
}
[HttpPost]
public ActionResult Index(IEnumerable<Book> model)
{
return View(model);
}
}
檢視:
@model IEnumerable<Book>
@using (Html.BeginForm())
{
<table>
<thead>
<tr>
<th>Id</th>
<th>Selected</th>
</tr>
</thead>
<tbody>
@Html.EditorForModel()
</tbody>
</table>
<button type="submit">OK</button>
}
編輯器模板(~/Views/Shared/EditorTemplates/Book.cshtml
):
@model Book
<tr>
<td>@Html.EditorFor(x => x.Id)</td>
<td>@Html.CheckBoxFor(x => x.Selected)</td>
</tr>
生成的標記:
<form action="/" method="post">
<table>
<thead>
<tr>
<th>Id</th>
<th>Selected</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &#234;tre un nombre." data-val-required="The Id field is required." name="[0].Id" type="text" value="1" />
</td>
<td>
<input data-val="true" data-val-required="The Selected field is required." name="[0].Selected" type="checkbox" value="true" />
<input name="[0].Selected" type="hidden" value="false" />
</td>
</tr>
<tr>
<td>
<input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &#234;tre un nombre." data-val-required="The Id field is required." name="[1].Id" type="text" value="2" />
</td>
<td>
<input checked="checked" data-val="true" data-val-required="The Selected field is required." name="[1].Selected" type="checkbox" value="true" />
<input name="[1].Selected" type="hidden" value="false" />
</td>
</tr>
<tr>
<td>
<input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &#234;tre un nombre." data-val-required="The Id field is required." name="[2].Id" type="text" value="3" />
</td>
<td>
<input data-val="true" data-val-required="The Selected field is required." name="[2].Selected" type="checkbox" value="true" />
<input name="[2].Selected" type="hidden" value="false" />
</td>
</tr>
</tbody>
</table>
<button type="submit">OK</button>
</form>
'Html.EditorFor(M => M [I] .ID)'將顯示模型的'的Id值[I] .Id'。如果您的模型具有重複的ID,您的表單也會重複。 – jrummell 2012-02-13 18:06:25
@jrummell:是的使用我的表單的元素將有重複的Id。但那麼客戶端驗證如何工作呢? – Moon 2012-02-13 19:28:50
好吧,要開始,你應該確保你有獨特的ID。除此之外,你是否有特定的錯誤? – jrummell 2012-02-13 19:30:46