我有这个:
@using (Html.BeginForm("Action", "Controller", FormMethod.Post))
{
@Html.TextBoxFor(m => m.City, new { id = "tbCity", maxlength = 50 })
<input type="submit" value="Save" class="btSave" />
}
我想做一个sublit做一些验证(检查“tbCity”是否为长度!= 0),我创建了一个带有所有验证的函数,我怎么能在这里调用?如果验证不正确,取消?
谢谢,
UPDATE1
@Adam Pope:
想象一下,我有一个数据模型名称为“Person”(名字,姓氏,......),一个带有public Person Person{ get; set; }
的模型类,其中使用[必需]属性?
答案 0 :(得分:2)
如果您使用的是ASP.NET MVC 2或3,那么您应该检查DataAnnotations
http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx
http://www.asp.net/mvc/tutorials/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript
他们允许您在域模型上指定验证约束,并让UI自动为您生成验证代码。
在这种情况下,您可能有一个模型
public class MyModel
{
[Required]
public string City { get; set; }
}
然后您的视图使用该模型
@model MyModel
@Html.TextBoxFor(x => x.City)
@Html.ValidationMessageFor(x => x.City)
更新
对于下拉列表,我倾向于执行以下操作,而不是100%确定它是最佳的,但它可以正常工作
public class MyModel
{
[Range(1,int.MaxValue,ErrorMessage="Please select a value")]
public int OtherModelID { get; set; }
public IList<OtherModel> OtherModels {get; set; }
}
然后在视图中
@model MyModel
<select id="OtherModelID" name="OtherModelID">
<option value="0">Please Select</option>
@foreach(var m in Model.OtherModel)
{
<option value="m.ID">m.Name</option>
}
</select>
如果你在编辑屏幕上,你可以在那里设置一个条件来选择当前值。
答案 1 :(得分:1)
如果您使用的是jQuery,那么您应该使用像jQuery validation这样的内置框架。
对于您的场景,它可能听起来有点过度杀戮,但随着项目的增长,验证规则很容易爆炸。因此,使用验证框架非常棒。 jQuery验证插件被广泛使用并且非常有用。
修改强>
代码:
$("form").live("submit", function () {
if ($("#tbCity").val().length == 0) {
alert("tbCity length should be greater than 0"); return false;
}
});