我一直在互联网上搜索,试图找到一种方法,将表单元素中的破折号容纳到 MVC 2、3 甚至 4 中 ASP.NET 控制器的默认模型绑定行为中。
作为一名前端开发人员,我更喜欢 CSS 中的破折号,而不是驼峰命名法或下划线。在我的标记中,我想要做的是这样的:
<input type="text" name="first-name" class="required" />
<input type="text" name="last-name" class="required" />
在控制器中,我将传递一个 C# 对象,如下所示:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
//etc...
}
有什么办法可以延长Controller
类通过一些正则表达式或其他行为来适应这种情况?我讨厌我必须做这样的事情:
<input type="text" name="person.firstname" class="required" />
甚至这个:
<input type="text" name="isPersonAttending" class="required" />
想法?
您始终可以创建自己的模型绑定器。
下面是一个实现绑定器的示例,该绑定器支持将别名添加到模型属性:
http://ole.michelsen.dk/blog/bind-a-model-property-to-a- Different-named-query-string-field/ http://ole.michelsen.dk/blog/bind-a-model-property-to-a-different-named-query-string-field/
并用它做类似的事情:
[ModelBinder(typeof(AliasModelBinder))]
public class Person
{
[BindAlias("first-name")]
public string FirstName { get; set; }
[BindAlias("last-name")]
public string LastName { get; set; }
//etc...
}
EDIT:正如博主所说,这个实现是基于 Andras 对以下 SO 问题的回答:Asp.Net MVC 2 - 将模型的属性绑定到不同的命名值 https://stackoverflow.com/questions/4316301/asp-net-mvc-2-bind-a-models-property-to-a-different-named-value#answer-4316327
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)