我正在使用ASP.NET MVC,我希望所有用户输入的字符串字段在插入数据库之前进行修剪.由于我有很多数据输入表单,我正在寻找一种优雅的方法来修剪所有字符串,而不是明确地修剪每个用户提供的字符串值.我很想知道人们如何以及何时修剪弦乐.
我想也许创建一个自定义模型绑定器并修剪那里的任何字符串值......这样,我所有的修剪逻辑都包含在一个地方.这是一个好方法吗?是否有任何代码示例执行此操作?
当没有值时,我曾经收到空字符串:
[HttpPost]
public ActionResult Add(string text)
{
// text is "" when there's no value provided by user
}
Run Code Online (Sandbox Code Playgroud)
但现在我正在传递一个模型
[HttpPost]
public ActionResult Add(SomeModel Model)
{
// model.Text is null when there's no value provided by user
}
Run Code Online (Sandbox Code Playgroud)
所以我必须使用?? ""运算符.
为什么会这样?
我正在将一个对象从客户端传递给服务器.在此过程中,表示为string.empty的对象的属性将转换为null.当对象类型支持string.empty时,我想知道如何防止这种情况.

console.log("DataToPost:", dataToPost);
$.ajax({
type: "POST",
contentType: 'application/json'
url: "../../csweb/Orders/SaveOrderDetails/",
data: dataToPost,
success: function (result) {
console.log(result);
},
error: function (e) {
console.error(e);
}
});
Run Code Online (Sandbox Code Playgroud)

我的模型包含可空的DateTime对象.我不能强制服务器上的所有空值到string.empty.
我正在使用AutoMapper,所以我不想在服务器上单独检查属性.
我有剃刀文件,我用字符串的文本框定义html表单:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Product</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
问题是,我希望这个字段(model.name)不可为空,但剃刀验证允许字符串为空,当我将空字符串添加到模型时它会给出错误.任何建议如何验证这个字符串不再是空的?
我正在使用MVC 3并尝试将字段留空以作为零长度字符串而不是空值发送到数据库.这可能与数据注释属性有关吗?
如果没有,从nulls转换的最合适的地方是什么?它是在模型验证期间吗?
asp.net-mvc ×4
c# ×2
razor ×2
asp.net ×1
javascript ×1
jquery ×1
null ×1
string ×1
validation ×1
viewmodel ×1