view中使用的不是强类型,Action如何验证并返回一个信息?js 验证不能取代服务器端,因为浏览器可能会禁用js.view使用的不是强类型,ModelState.AddModelError好像就不好使了。高手们是怎么做服务器端 验证的。
解决方案 »
- SQL问题
- 服务器端 文件对话框
- 如何在字符串的指定位置的后面插入一个字符串?
- 寻找高手!实例化web用户控件,用构造函数和LoadControl ()的有什么不一样?
- 请问怎样可以根据条件去对datagrid里的不同的文字变色啊?
- ■■我想设计一个组件,然后编译成DLL,那在VS2003应该怎么操作呢?如何新建一个组件呢?新手,帮忙~~~~
- 请教DataGrid列文字过长的处理方法
- Reporting Service创建的报表在Asp.net中显示,并传递相应参数
- 问一个asp.net执行语法
- 数据没有问题,但插入数据库出现异常?
- 加了KindEditor后不能设置textArea readonly
- asp.net 微信公众平台
然后就判断username的长度什么的~不过我还是比较推荐定义一个实体类
很多网站你把js给禁了还会有用吗?不是强类型就自己验证呗 然后return json
高水平的网站是完全可以做到JS分离还能work的
2. 主的情况应该是少数情况,甚至可以说是一个不良设计如果不是强类型,还是可以在controller端的Action里验证if (string.IsNullOrEmpty(name)) {
ModelState.AddModelError("name", "Please enter your name");
} if (ModelState.IsValid) {
XXX
} else {
return View();
} 从源代码看来,我觉得即使不是一个强类型,这个还是会work的(实际上也是,我简单试了下)
只要key的名字和后面非强类型的string匹配public void AddModelError(string key, string errorMessage)从这里和里面的代码可见,无论强类型,还是弱类型,Property都会转化为string作为key所以楼主说弱类型AddModelError不work也是不对的
string oldPasw = Request["txtPassword"];
string newPasw1 = Request["txtPasw1"]; if (newPasw1.Length < 3)
{
ModelState.AddModelError("txtPasw1", "密码长度必须大于3个字符~~");
return View();
}View:
@Html.Password("txtPasw1", "", new { style = "width:200px;" })
@Html.ValidationMessage("txtPasw1")
我是这样验证的,可是ModelState.AddModelError没反应。
还需要写其它什么吗?
@Html.ValidationSummary()
<p>Your name: @Html.TextBox(“name”) </p>
<input type="submit" value="Submit RSVP" />
}@Html.ValidationMessage("txtPasw1")没试过
@using (Html.BeginForm()) {
@Html.ValidationSummary()
<p>Your name: @Html.Password("name") </p>
@Html.ValidationMessage("name")
<input type="submit" value="Submit RSVP" />
}
</body>
[HttpPost]
public ViewResult RsvpForm(string name)
{
if (string.IsNullOrEmpty(name))
{
ModelState.AddModelError("name", "Please enter your name");
} if (ModelState.IsValid)
{
return View("Thanks");
}
else
{
// there is a validation error - redisplay the form
return View();
}
}
View:@model Zjgcxx.Model.Web_User@{
Layout = null;
}<!DOCTYPE html><html>
<head>
<title>修改密码</title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-1.8.3.min.js" type="text/javascript"></script> <script type="text/javascript">
$(document).ready(function () {
}); function chkFrm() {
var pasw0 = $("#txtPassword").val();
var pasw1 = $("#txtPasw1").val();
var pasw2 = $("#txtPasw2").val(); if (pasw0 == "") {
alert("请输入原密码!");
$("#txtPassword").focus();
return false;
}
if (pasw1.length < 3) {
alert("新密码长度不足!");
$("#txtPasw1").focus();
return false;
}
if (pasw1 != pasw2) {
alert("新密码不一致!");
$("#txtPasw2").focus();
return false;
} return true;
}
</script>
</head>
<body>
<center> <br /><p style="font-size:18px; font-weight:bold;">修 改 密 码</p><br />
@using (Html.BeginForm("ChangePassword", "AdminUser", FormMethod.Post, new { id = "frm1" }))
{
@Html.ValidationSummary()
@*@Html.HiddenFor(model => model.user_id)*@
<table border="1" cellpadding="0" cellspacing="0" class="TabStyle" width="500">
<tr><td style="width:80px;">原 密 码:</td>
<td>@Html.Password("txtPassword", "", new { style = "width:200px;" })
@Html.ValidationMessage("txtPassword")
</td>
</tr>
<tr><td>新 密 码:</td>
<td>@Html.Password("txtPasw1", "", new { style = "width:200px;" })
@Html.ValidationMessage("txtPasw1")
</td>
</tr>
<tr><td>确认密码:</td>
<td>@Html.Password("txtPasw2", "", new { style = "width:200px;" })
@Html.ValidationMessage("txtPasw2")
</td>
</tr>
</table>
<br />
<input type="submit" value="提 交" @*onclick="return chkFrm();"*@
style="width:70px;" class="button0" onmouseover="this.className='button0_on'" onmouseout="this.className='button0'" />
}
<br />
</center>
</body>
</html>
Cotroller: public ActionResult ChangePassword()
{
Web_User uModel = getLandUser();
return View(uModel);
}
[HttpPost]
public ViewResult saveChange()
{
string userid = Request["user_id"];
string oldPasw = Request["txtPassword"];
string newPasw1 = Request["txtPasw1"];
string newPasw2 = Request["txtPasw2"];
oldPasw = Tools.ToMD5(oldPasw);
Web_User uModel = null; #region
if (newPasw1.Length < 3)
{
ModelState.AddModelError("txtPasw1", "密码长度必须大于3个字符~~");
}
if (ModelState.IsValid)
{
return View("Thanks.");
}
else
{
return View();
}
if (!newPasw1.Equals(newPasw2))
{
ModelState.AddModelError("txtPasw2", "新密码不一致~~");
return View();
}
if (userid != null)
{
uModel = userBLL.Get(userid);
if (uModel != null)
{
if (oldPasw != uModel.user_pasw)
{
ModelState.AddModelError("txtPassword", "原密码不正确~~");
return View();
}
else
{
newPasw1 = Tools.ToMD5(newPasw1);
uModel.user_pasw = newPasw1;
int flag = userBLL.Update(uModel);
if (flag > 0)
{
ModelState.AddModelError("lbMsg", "密码修改成功!");
return View();
}
}
}
else
{
ModelState.AddModelError("lbMsg", "用户身份无效~~");
return View();
}
}
else
{
ModelState.AddModelError("lbMsg", "用户身份无效~~");
return View();
}
#endregion return View();
}
楼主view的名称是什么?问题2:
Html.BeginForm("ChangePassword", "AdminUser", FormMethod.Post, new { id = "frm1" }))会进入AdminUserController的Action
[HttpPost]
ChangePassword
但我没有看到这个方法……楼主确定你代码是对的,点提交后能进入ChangePassword的断点?