Передача динамических значений 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()?
Ответы
Ответ 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>