Я работаю над страницей поиска, которая отображает таблицу результатов. Я хочу добавить некоторые функциональные возможности с Javascript. Вся таблица инкапсулирована в форме, и у каждого элемента в таблице есть несколько действий, которые вы можете выполнить; Одним из примеров является Add comment.

Я могу передать все остальные переменные формы правильно, поскольку они являются статическими. У меня проблема в том, что я могу передать ID в действие, так как оно меняется для каждой строки результата. Вот то, что я до сих пор (сокращен)

Заголовок действия:

public ActionResult Create( ........., Int ID);

Посмотреть:

...

@foreach( var item in Model )
{
    ...
    @Html.ActionLink("Comment", "Create", "Comment", new { ID = Model.ID }, new { onclick = "CommentSubmit(@Model.ID)" })
}

Javascript:

function CommentSubmit(id) {

            //What do?
    $("#DynForm").attr("action", "/Comment/Create");
    $("#DynForm").submit();
};

Как я могу просто передать Javascript / jQuery в ID в дополнение к другим переменным формы?

Что-то вроде побочного вопроса, но нужно ли мне останавливать выполнение исходного якоря (так как мой javascript отправляет форму)? Как мне это сделать?

1
Jeff 30 Янв 2013 в 01:06

2 ответа

Лучший ответ

Вы можете создать или обновить скрытый ввод перед отправкой формы с идентификатором

function CommentSubmit(id) {
    if($("#DynForm #id").length > 0)
        $("#DynForm #id").val(id);
    else
        $("#DynForm").append("<input type='hidden' id='id' name='id' value='"+id+"' />");

    $("#DynForm").attr("action", "/Comment/Create");
    $("#DynForm").submit();
};
1
sdespont 29 Янв 2013 в 21:11

Ты мог бы сделать это

<input type="hidden" name="myID" />


function CommentSubmit(id) {

    $("#myID").val(id);        
    $("#DynForm").attr("action", "/Comment/Create");
    $("#DynForm").submit();
};

Затем в контроллере просто добавьте myID в качестве параметра

Public ActionResult Action(string myID , .... ){

}

Или вы можете просто сделать это

 function CommentSubmit(id) {
        //What do?
$("#DynForm").attr("action", "/Comment/Create/" + id);
$("#DynForm").submit();

} ;

Стандартная маршрутизация в Asp.Net будет использовать третью часть url в качестве параметра "id"

Ех . { Контроллер } / {действие } / {ID }

1
Scott Selby 29 Янв 2013 в 21:12