ASP.NET MVC3 RAZOR: получение скрытого поля Значение атрибута в контроллере (с использованием ViewModel) - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть вид, который имеет две кнопки («Первая» и «Вторая») и одно скрытое поле. Когда пользователь нажимает кнопку «Первая», скрытое поле будет установлено как значение атрибута «data-myAttribute» в первой кнопке. Когда пользователь нажимает кнопку «Вторая», скрытое поле будет установлено как значение атрибута «data-myAttribute» во второй кнопке. Как только скрытое поле установлено, форму необходимо отправить. Это очень хорошо работает со следующим кодом. Кроме того, мне нужно иметь возможность увидеть значение скрытого поля в контроллере. Как мы получаем значение в контроллере?

namespace MyHiddenFieldTest.Controllers
{
public class ElementController : Controller
{

    public class MyViewModel
    {
        public string ControlName { get; set; }
    }

    // GET: 
    public ActionResult MyElement()
    {
        MyViewModel myViewModel = new MyViewModel();
        return View(myViewModel);
    } 


    // POST:
    [HttpPost]
    public ActionResult MyElement(MyViewModel theViewModel)
    {
        string selectedControl = theViewModel.ControlName;
        return View(theViewModel);

    }


}
}

VIEW

@model MyHiddenFieldTest.Controllers.ElementController.MyViewModel

@{
ViewBag.Title = "MyElement";
}

<h2>MyElement</h2>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"     type="text/javascript"> </script>
<script type="text/javascript">


$(document).ready(function () 
{

    $('#mainDiv input[type="button"]').on('click', function () 
    {
        $('#from').val($(this).attr('data-myAttribute'));

        alert($('#from').val());
        $(this).closest('form').submit();
    });

});


</script>


@using (Html.BeginForm())
{

<div id="mainDiv">
    <input type="button" value="First" data-myAttribute="theFirst"  />
    <input type="button" value="Second" data-myAttribute="theSecond"  />
    <input type="hidden" id="from" value="1" />
    <input type="hidden" id="to" value="2" />
</div>

}

ЧТЕНИЕ

  1. Передача данных JSON из действия контроллера в представление бритвы

1 Ответ

2 голосов
/ 21 февраля 2012

ASP.Net MVC автоматически связывает параметры действий для формирования сообщений.
Просто добавьте параметр string from в метод действия.

Однако вам также потребуется name="" входных данных, чтобы браузер отправил их.


На самом деле, однако, весь ваш скрипт не нужен.

Просто напишите

<input type="submit" name="from" value="First" />
<input type="submit" name="from" value="Second" />

Браузер отправит пару имя / значение для любой нажатой кнопки.

...