Передать идентификатор кнопки в контроллер MVC из представления - PullRequest
1 голос
/ 23 февраля 2012

У меня есть кнопка на моей странице .cshtml.Я хочу передать идентификатор кнопки в действие контроллера.Вот что у меня сейчас:

@foreach (var item in Model)
{
    <div id="report">@Html.ActionLink(@item.Name, "Parameterize", "Report", new { Id = @item.Id }, null )</div><br /><br />                           
    <input id="@item.Id" type="button" onclick="Test()" class="button1" value="Update" />

}

В Firebug я вижу, что идентификатор правильно выбран:

enter image description here

Теперь в коде js, здесьэто то, что я пытаюсь, но по какой-то причине идентификатор все еще равен нулю в действии контроллера:

<script type="text/javascript">
    function Test() {       
        var itemId = $('#report').attr('id');
            var url = '@Url.Action("UpdateReport/", "Report")';
            var data = { Id:itemId };
              $.post(url, data, function (result) {
                  var id = '#postedFor' + postId;
                  $(id).html(result);

            });                   
    }
</script>

В действии контроллера у меня есть это, и идентификатор равен нулю в это время:

 public ActionResult UpdateReport(string id)
        {
            return View("Index");
        }

Каждый совет более чем приветствуется.Заранее спасибо, Лазиале

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Вы генерируете множество <div> элементов с одинаковым значением "id". «Идентификатор» элемента должен быть уникальным на всей странице, иначе произойдут странные вещи.

Таким образом, $('#report') не будет работать должным образом. Может быть, вы могли бы сделать:

@foreach (var item in Model)
{
    <div id="report_@item.Id">@Html.ActionLink(@item.Name, "Parameterize", "Report", new { Id = @item.Id }, null )</div><br /><br />                           
    <input id="@item.Id" type="button" onclick="Test()" class="button1" value="Update" />

}

В качестве альтернативы, вы можете передать элемент ввода непосредственно обработчику:

  <input id="@item.Id" type="button" onclick="Test(this)" class="button1" value="Update" />

Тогда:

function Test(item) {       
    var itemId = item.id,
        var url = '@Url.Action("UpdateReport/", "Report")';
        var data = { Id:itemId };
          $.post(url, data, function (result) {
              var id = '#postedFor' + postId;
              $(id).html(result);

        });                   
}
1 голос
/ 23 февраля 2012

Эта строка:

var itemId = $('#report').attr('id');

получает идентификатор вашего div с отчетом об идентификаторе.

Вы хотите передать кнопку функции test () и использовать ее для получения идентификатора:

<input id="@item.Id" type="button" onclick="Test(this)" ...

А затем в вашей функции js Test ():

var itemId = $(this).attr('Id');

Также обратите внимание, что имена атрибутов чувствительны к регистру. Вы написали «id», но ваш атрибут называется «Id».

0 голосов
/ 23 февраля 2012

Ваш селектор выключен:

var itemId = $('#report').attr('id');

Это даст значение id элемента с id, равным report. Я не думаю, что это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...