Подтвердить что ты не робот

Передача динамических значений javascript с использованием Url.action()

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

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

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

firstname, имя пользователя не будет отображаться внутри метода Url.action().

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

4b9b3361

Ответ 1

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

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.

Ответ 2

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

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

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

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

Ответ 3

В моем случае он отлично поработал, выполнив следующие действия:

Контроллер:

[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();
    });

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

Ответ 4

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

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

Ответ 5

Если вы хотите перенаправить на другую страницу с параметром принимает, используйте этот метод.

@(Html.Kendo().Grid<AGridViewModel>()
  .Name("Grid")
  .Columns(columns => {
    columns.Bound(p => p.Id)
    columns.Bound(p => p.Name);
    columns.Command(command => command.Custom("View Details").Click("showDetails"));

})

<script type="text/javascript">  
function showDetails(e) {  
    e.preventDefault();
    var d = this.dataItem($(e.currentTarget).closest("tr"));
    //alert("Selected item ID is:" + d.Id);
    window.location.href = "@Url.Action("action", "controller")?id=" + d.Id;
}
</script>