Передача динамических значений JavaScript с помощью Url.action()

Может кто-нибудь сказать, пожалуйста, как передать динамические значения с помощью Url.action().

Что-то вроде,

var firstname="abc";
var username = "abcd";
location.href = '@Html.Raw(@Url.Action("Display", "Customer", new { uname = firstname ,name = username}))';

имя, имя пользователя не получает ссылки внутри метода Url.action().

Как передать эти динамические значения с помощью Url.action()?

4 ответа

Решение

@Url.Action() метод является процессом на server-side, так что вы не можете передать client-side значение этой функции в качестве параметра. Вы можете согласовать client-side переменные с server-side URL, сгенерированный этим методом, который является строкой на выходе. Попробуйте что-то вроде этого:

var firstname = "abc";
var username = "abcd";
location.href = '@Url.Action("Display", "Customer")?uname=' + firstname + '&name=' + username;

@Url.Action("Display", "Customer") обрабатывается на server-side а остальная часть строки обрабатывается на client-side, конкатенируя результат server-side метод с client-side,

Этот ответ не может быть на 100% относящимся к вопросу. Но это решает проблему. Я нашел этот простой способ достижения этого требования. Код идет ниже:

<a href="@Url.Action("Display", "Customer")?custId={{cust.Id}}"></a>

В приведенном выше примере {{cust.Id}} является переменной AngularJS. Однако его можно заменить переменной JavaScript.

Я не пробовал передавать несколько переменных с помощью этого метода, но я надеюсь, что он также может быть добавлен к URL-адресу при необходимости.

Самый простой способ это:

  onClick= 'location.href="/controller/action/"+paramterValue'

В моем случае это сработало просто сделав следующее:

Контроллер:

[HttpPost]
public ActionResult DoSomething(int custNum)
{
    // Some magic code here...
}

Создайте форму без действий:

<form id="frmSomething" method="post">
    <div>
        <!-- Some magic html here... -->
    </div>
    <button id="btnSubmit" type="submit">Submit</button>
</form>

Установите событие нажатия кнопки, чтобы инициировать отправку после добавления действия в форму:

var frmSomething= $("#frmSomething");
var btnSubmit= $("#btnSubmit");
var custNum = 100;

btnSubmit.click(function()
    {
        frmSomething.attr("action", "/Home/DoSomething?custNum=" + custNum);

        btnSubmit.submit();
    });

Надеюсь, что это помогает Ватос!

Другие вопросы по тегам