Имя кнопки передачи mvc3 для публикации - PullRequest
1 голос
/ 10 марта 2012

Имя кнопки не передается моему методу действия.

Вот мой взгляд (упрощенно):

@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post))
{    
    <input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" />
}

Вот метод контроллера:

[HttpPost, ActionName("HandleSubmit")]
public ActionResult HandleSubmit(int? id, string btnSubmit)
{
    switch (btnSubmit)
    {
        case "AddLineItem":
            break;
        case "AddNewOrder":
            break;
    }

    return View("OrderDetails");
}

Значение btnSubmit всегда равно нулю. Что мне нужно сделать по-другому?

Ответы [ 2 ]

1 голос
/ 10 марта 2012

name - это то, что связано с сигнатурой вашего метода, а не id.

Используйте следующее:

public ActionResult HandleSubmit(string AddLineItem, string AddNewOrder)
{
    /* ... code ... */

    if(!string.IsNullOrEmpty(AddLineItem)) {

    }
    else if(!string.IsNullOrEmpty(AddNewOrder)) {

    }

    /* ... code ... */
}

Помните, что пост формы отправит на сервер multipart/form-data коллекцию пар name/value.

0 голосов
/ 10 марта 2012

Вы не отправляете идентификатор кнопки ни в каком имени или значении каким-либо образом.

Я предлагаю вам создать модель, которая имеет следующие два свойства:

В методе get создайтеэкземпляр модели:

    public ActionResult HandleSubmit()
    {
        MyModel model = new MyModel();
        return View(model);
    }        

В методе post используйте свойство модели для получения ваших значений.

    [HttpPost, ActionName("HandleSubmit")]
    public ActionResult HandleSubmit(MyModel model)
    {
        switch (model.Order)
        {
            case "AddLineItem":
                break;
            case "AddNewOrder":
                break;
        }

        return View("OrderDetails");
    }

Ваше представление может выглядеть примерно так:

@model MvcApplication3.Controllers.MyModel

@using (Html.BeginForm("HandleSubmit", "Home", FormMethod.Post))
{    
  @Html.EditorFor(x => Model.Order)
  <input id="btnAddLineItem" type="submit" name="AddLineItem" value="AddLineItem" />
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...