MIa*_*sca 6 asp.net-mvc asp.net-mvc-3
我有一个ASP.NET MVC3应用程序,并在我的一个模型类上进行远程验证.我发现,如果我打开了该模型和远程验证例程编辑观点IS NOT称为(由于未编辑与它的远程验证字段)在提交表单前,按钮点击张贴形式IS NOT列入请求发送到Action方法的数据.
如果远程验证例程IS被贴在表格之前叫-按钮点击提交表单IS包括在后.
我需要知道在服务器上调用Action时单击了哪个按钮,以便我可以确定用户是否单击了UPDATE或CANCEL.
如果我从模型中删除远程验证,则表单每次都会正确提交.
为什么在表单提交之前未调用远程验证时,用于提交表单的按钮将从表单发布中排除.
谢谢迈克尔
以下是一些示例代码:
@model Channel
<script src="@Url.Content("~/Scripts/jquery-1.6.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
<fieldset>
<legend>Edit Channel</legend>
@Html.HiddenFor(model => model.ChannelGUID)
<div class="editor-label">Name</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">Description</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)
</div>
<div class="editor-label">Channel Code</div>
<div class="editor-field">
@Html.EditorFor(model => model.Code)
@Html.ValidationMessageFor(model => model.Code)
</div>
<p>
<button type="submit" name="updateCommand" value="Update">Update</button>
<button type="submit" class="cancel">Cancel</button>
</p>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
这是行动
[HttpPost]
public ActionResult Edit(string updateCommand, Channel channel)
{
if (updateCommand != null)
{
//update clicked
}
else
{
//cancel clicked
}
Run Code Online (Sandbox Code Playgroud)
这是模型属性Code的远程属性
[Remote("IsChannelCodeUnique", "Channel", AdditionalFields = "ChannelGUID", ErrorMessage = "code must be unique")]
Run Code Online (Sandbox Code Playgroud)
我将取消按钮更改为链接(使用操作链接),并使用 jQuery UI 来设计链接和表单上的提交按钮的样式,使其看起来相同。这避免了我所遇到的单击按钮未包含在 POST 数据中的问题。现在,当调用该操作时,我不需要确定单击的按钮来查看用户是否按下了取消。
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |