我正在编写一些代码,我想在其中呈现 MVC BeginForm,但还要包含其他 HTML。
例如。
@using (Html.BeginMyCustomForm()) {
}
这会吐出来
<form action="" etc>
加
<input type="hidden" name="my-additional-field-i-always-want">
@Html.ValidationMessageFor(m => m)
这可能吗?
我知道我会考虑某种扩展或最有可能的东西。
希望这是有道理的,并提前致谢!
最佳答案
在 BeginForm 的扩展中包含这些东西并不是一个好主意。原因是好的设计要求对象应该做一件事。这称为单一职责原则。
您现在希望表单对象也创建输入和验证。
相反,使用 MVC 模板系统并创建一个默认模板以满足您的需要。您还应该使用 Html.HiddenFor 而不是使用输入标签,除非有一些特定的理由不这样做。
另一种选择是使用 MVC Scaffolding 来生成你想要的。
更多关于编辑器模板 http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html
更多关于脚手架 http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/
关于asp.net-mvc-3 - 带有附加 HTML 的 MVC3 Html.BeginForm(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12612882/