我想在我的asp.net MVC网站上创建一个表单,而不使用像@ Html.EditorFor()这样的HTML帮助...
我也想使用Jquery Mobile。
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset data-role="controlgroup" data-iconpos="right">
<legend>Languages :</legend>
<input type="checkbox" name="checkbox-h-6a" id="checkbox-h-6a">
<label for="checkbox-h-6a"></label>
<input type="checkbox" name="checkbox-h-6b" id="checkbox-h-6b">
<label for="checkbox-h-6b">French</label>
<input type="checkbox" name="checkbox-h-6c" id="checkbox-h-6c">
<label for="checkbox-h-6c">German</label>
</fieldset>
}
我想将它与我的模型一起使用。 (例如“bool UseEnglish”,“bool UseFrench”,..)
我怎么能这么做?
答案 0 :(得分:2)
帮助者真正做的唯一事情就是抽象出表单字段的name
属性。如果您不想使用帮助程序,则必须确保将name
属性设置为正确的内容,以便它们在POST后与您的模型匹配。
对于简单属性,名称只是属性名称,因此给出:
public string Foo { get; set; }
您的输入如下:
<input type="text" name="Foo">
对于复杂类型或参考导航属性之类的东西,您只需将属性名称链接在一起,直到您达到所需级别,因此给出:
public Foo Foo { get; set; }
和
public class Foo
{
public string Bar { get; set; }
}
你最终会:
<input type="text" name="Foo.Bar">
最后,对于列表样式属性,您只需添加一个索引,因此给出:
public List<string> Foos { get; set; }
然后:
<input type="text" name="Foos[0]">
<input type="text" name="Foos[1]">
<input type="text" name="Foos[2]">
当然,你可以把所有这些原则放在一起来模拟任何关系:
public List<Foo> Foos { get; set; }
然后:
<input type="text" name="Foos[0].Bar">