将更改的项目从 DropDownListFor 获取到另一种形式
Get changed item from DropDownListFor into another form
我有 3 个表单,每个表单都可以在服务器端访问自己的 Delete/Create/Edit 操作。
当我更改 DropDownListFor 所选项目并执行 Delete 时,字符串标题将传递到服务器
当我更改 DropDownListFor 所选项目并执行 Create/Edit 时,字符串标题为 not 传递给服务器。
如何让我的 Create/Edit 表单知道我在 DropDownListFor 中所做的更改?
传递初始标题值适用于 Create/Edit 操作。所以问题是更改事件。
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" />
}
您可以使用带有多个按钮的 1 个表单,您将获得想要的结果,并且您的视图会更清晰。
据我所知主要有两种方法:
- 1 MVC Action:您可以检查 MVC action 中点击提交按钮的值,然后执行所需的操作。假设您的按钮名称为 "submitButtonName".
[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 更改按钮单击时的表单目标操作。假设您的按钮具有 class "submitButtonClass".
的示例
$(".submitButtonClass").on("click", function(e){
e.preventDefault();
$('#yourFormId').attr('action', $(this).val()).submit();
});
我在没有测试的情况下快速编写了代码,但它应该可以工作:)
祝你有愉快的一天,
阿尔贝托
我有 3 个表单,每个表单都可以在服务器端访问自己的 Delete/Create/Edit 操作。
当我更改 DropDownListFor 所选项目并执行 Delete 时,字符串标题将传递到服务器
当我更改 DropDownListFor 所选项目并执行 Create/Edit 时,字符串标题为 not 传递给服务器。
如何让我的 Create/Edit 表单知道我在 DropDownListFor 中所做的更改?
传递初始标题值适用于 Create/Edit 操作。所以问题是更改事件。
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" />
}
您可以使用带有多个按钮的 1 个表单,您将获得想要的结果,并且您的视图会更清晰。
据我所知主要有两种方法:
- 1 MVC Action:您可以检查 MVC action 中点击提交按钮的值,然后执行所需的操作。假设您的按钮名称为 "submitButtonName".
[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 更改按钮单击时的表单目标操作。假设您的按钮具有 class "submitButtonClass".
的示例$(".submitButtonClass").on("click", function(e){ e.preventDefault(); $('#yourFormId').attr('action', $(this).val()).submit(); });
我在没有测试的情况下快速编写了代码,但它应该可以工作:)
祝你有愉快的一天,
阿尔贝托