码迷,mamicode.com
首页 > 其他好文 > 详细

表单中的readOnly 和disabled

时间:2015-04-25 13:39:39      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:

readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容。但是它们之间有着微小的差别,总结如下:

Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,包括select, radio, checkbox, button等。

但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去(这种情况出现在我们将某个表单中的textarea元素设置为disabled或readonly,但是submit button却是可以使用的)。

在asp.net mvc 的视图中要显示某个表单值而不更改其值,并且处理表单的操作方法中要调用这个值,在视图中有三种方法处理:

1、将该值作为隐藏字段处理,而在显示中用displayFor HTML辅助方法,字段值就作为一个文本处理,当然表单提交也不会提交该字段。

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">

<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })

@Html.HiddenFor(model =>model.UserName)
<div class="form-group">
@Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<p class="form-control-static">
@Html.DisplayFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })
</p>

</div>
</div>

 

2、将该值作为隐藏字段处理,在Editor Html辅助方法中添加disabled="disabled" html属性值,这样就显示一个灰色的文本框。因为表单已经被disabled掉,所以表单不会提交该字段值到控制器的操作方法中。

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">

<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })

@Html.HiddenFor(model =>model.UserName)
<div class="form-group">
@Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<p class="form-control-static">
@Html.Editfor(model => model.UserName, new { htmlAttributes = new { @class = "form-control",disabled="disabled" } })
</p>

</div>
</div>

 3、使用 readonly属性,由于readonly 是C#的关键字。所有只能使用原始的HTML标记。这种情况表单字段值会提交到控制器的操作方法,要注意手动设置表单字段的Name 属性和value属性。

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">

<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })

<div class="form-group">
@Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input type="text" value="@Model.UserName" class="form-control" readonly="readonly" name="UserName" />
</div>
</div>

 

相关的action值:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ChangeUserPassword(ResetPasswordViewModel _resetPasswordViewModel)
{
if (!ModelState.IsValid)
{
return View(_resetPasswordViewModel);
}

var _user = UserManager.FindByName(_resetPasswordViewModel.UserName);
if (_user == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

var code =UserManager.GeneratePasswordResetToken(_user.Id);
var result =UserManager.ResetPassword(_user.Id,code,_resetPasswordViewModel.Password);
if (result.Succeeded)
{
return RedirectToAction("Index");

}
return View();


}

表单中的readOnly 和disabled

标签:

原文地址:http://www.cnblogs.com/liuyuanhao/p/4455775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!