【发布时间】:2016-04-30 15:17:42
【问题描述】:
我环顾四周,找不到足够的答案来回答我的问题。
我有一个名为 Title 的包装类,定义如下
public class Title
{
private readonly string _title;
public Title (string title) {
_title = title;
}
public static implicit operator Title(string title)
{
return new Title(title);
}
}
我在一个 ASP MVC 项目中使用这个类。现在我定义了一个这样的控制器:
public ActionResult Add(string title)
{
//stuff
}
这很好用。
但是,我希望自动将发布的字符串值绑定到 Title 构造函数,从而接受 Title 而不是 string 作为参数:
public ActionResult Add(Title title)
{
//stuff
}
但是,这不起作用,因为我会收到错误消息:
参数字典包含参数的空条目,这意味着模型绑定器无法将字符串绑定到Title 参数。
负责发布标题数据的 HTML:
<form method="post" action="/Page/Add" id="add-page-form">
<div class="form-group">
<label for="page-title">Page title</label>
<input type="text" name="title" id="page-title">
</div>
</form>
我的问题分为两部分:
1.为什么不能这样做,我希望 bodel binder 使用定义的隐式运算符来创建 Title 实例。
2。有没有办法在不显式创建模型绑定器的情况下仍然获得所需的行为?
【问题讨论】:
-
你能展示你的观点吗?您必须将视图的模型设置为标题类型而不是字符串才能正常工作
-
发送post到这个action的partial view不使用模型,只是一个表单,有一个textfield作为输入,不管怎样我都会添加负责发帖的html。