我有3个表单,每个表单都可以访问服务器端自己的删除/创建/编辑操作。
当我更改DropDownListFor所选项目并执行删除时,字符串标题将传递给服务器
当我更改DropDownListFor所选项目并执行创建/编辑时,字符串标题不传递给服务器。
如何让我的创建/编辑表单知道我在DropDownListFor中的变化?
传递初始标题值适用于“创建/编辑”操作。所以问题在于变革事件。
index.cshtml
@using (Html.BeginForm(MVC.Configuration.Addresses.ActionNames.Delete, MVC.Configuration.Addresses.Name, new { @area = MVC.Configuration.Name }, FormMethod.Post, HtmlAttributes.Form))
{
<div class="form-group required">
@Html.LabelFor(m => m.Title, HtmlAttributes.Label)
<div class="col-md-6">
@(Html.Kendo().DropDownListFor(m => m.Title)
.BindTo(Model.Addresses.OrderBy(order => order.Text))
.HtmlAttributes(HtmlAttributes.KendoControl))
</div>
</div>
<input type="submit" value="Delete" class="btn btn-default" />
}
@using (Html.BeginForm(MVC.Configuration.Addresses.ActionNames.Edit, MVC.Configuration.Addresses.Name, new { @area = MVC.Configuration.Name }, FormMethod.Get, HtmlAttributes.Form))
{
@Html.HiddenFor(p => p.Title)
<input type="submit" value="Edit" class="btn btn-default" />
}
@using (Html.BeginForm(MVC.Configuration.Addresses.ActionNames.Add, MVC.Configuration.Addresses.Name, new { @area = MVC.Configuration.Name }, FormMethod.Get, HtmlAttributes.Form))
{
@Html.HiddenFor(p => p.Title)
<input type="submit" value="Add" class="btn btn-default" />
}
答案 0 :(得分:1)
您可以使用带有多个按钮的1个表单,您将获得所需的结果,您的视图将更加清晰。
据我所知,有两种主要方法:
[HttpPost]
public ActionResult YourAction(string submitButtonName, YourFormModel model)
{
switch (submitButtonName) {
case "create":
CreateMethod(model);
break;
case "edit":
EditMethod(model);
break;
case "delete":
DeleteMethod(model);
break;
}
}
3 MVC操作:您可以使用javascript更改按钮单击时的表单目标操作。例如,您的按钮具有类&#34; submitButtonClass&#34;。
$(".submitButtonClass").on("click", function(e){
e.preventDefault();
$('#yourFormId').attr('action', $(this).val()).submit();
});
我在没有测试的情况下快速编写代码,但它应该可以工作:)
度过愉快的一天,
阿尔贝托