从DropDownListFor获取更改的项目到另一个表单

时间:2015-02-23 15:32:37

标签: asp.net-mvc kendo-ui asp.net-mvc-5 kendo-asp.net-mvc

我有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" />
        }

1 个答案:

答案 0 :(得分:1)

您可以使用带有多个按钮的1个表单,您将获得所需的结果,您的视图将更加清晰。

据我所知,有两种主要方法:

  • 1 MVC操作:您可以检查MVC操作中单击的提交按钮的值,然后执行所需的操作。例如,您的按钮名称为&#34; submitButtonName&#34;。

[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(); });

我在没有测试的情况下快速编写代码,但它应该可以工作:)

度过愉快的一天,

阿尔贝托