ASP.Net MVC ActionLink - PullRequest
       6

ASP.Net MVC ActionLink

0 голосов
/ 04 июня 2009

Я пытаюсь создать ActionLink в одном из моих представлений, который отправляет выбранное значение из раскрывающегося списка новому действию. Пока у меня есть это, мне просто нужно найти способ заполнить идентификатор в конце моего ActionLink.

   <%= Html.DropDownList("StatusDropDown") %>
   <%= Html.ActionLink("Apply","Index",new {Controller="Tasks", Action="Index", id="DROPDOWN LIST SECLECTED VALUE"}) %>

Очевидно, что эту ссылку нужно будет обновлять всякий раз, когда изменяется выбранный индекс раскрывающегося списка. Это то, что мне нужно сделать в JavaScript или есть лучший способ управления этим из ASP.Net MVC?

Спасибо

Ответы [ 2 ]

2 голосов
/ 04 июня 2009

Если вы не хотите использовать отправку формы (т. Е. Хотите, чтобы параметр передавался как часть URL-адреса, а не параметр формы), вам нужно будет создать клиентскую часть URL-адреса с помощью JavaScript.

<%= Html.DropDownList("StatusDropDown") %>
<a id="applyLink" href="#">Apply</a>

<script type="text/javascript">

    function setHref( elem, val )
    {
        if (val) {
           $(elem).attr( "href", "/Tasks/" + val );
           $("#applyLink").unbind("click");
        }
        else {
           $(elem).attr( "href", "#" );
           $("#applyLink").click( function() { alert( "No value chosen" ); } );
        }
    }

    $(function() {
       var dropdown = $("#StatusDropDown");
       dropdown.change( function() {
           setHref( this, $(this).val() );
       });
       setHref( dropdown, null );
    });
</script>
0 голосов
/ 04 июня 2009

Ссылка идет на другую страницу, по сути это перенаправление. Единственный способ обновить, куда идет эта ссылка со ссылкой на выпадающий список, - использовать javascript.

Звучит так, будто вы хотите что-то вроде отправки. В этом случае вы должны использовать форму и кнопку отправки, создавая соответствующие обработчики в вашем контроллере. Помните, что вы можете просто выполнить перенаправление в вашем контроллере, основываясь на предоставленном значении формы. Вот как то так:

<form method="post" action="/MyForm">
    <input type="select" name="mySelect">
        <option value="1">First Option</option>
        <option value="2">Second Option</option>
    </input>
</form>

А в вашем контроллере:

public ActionResult MyForm(int mySelect)
{
    return Redirect(String.Format("myurl?id={0}", mySelect));
    // Note the above is only preferable if you're going to an external link
    // Otherwise you should use the below:
    return RedirectToAction("myAction", new { id = mySelect });
}

Очевидно, что в этом упрощенном примере прокси-сервер MyForm для вашего желаемого действия является избыточным, но он иллюстрирует идею, позволяющую применить его к вашей конкретной ситуации.

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