使用 Url.action() 传递动态 javascript 值

Posted

技术标签:

【中文标题】使用 Url.action() 传递动态 javascript 值【英文标题】:Passing dynamic javascript values using Url.action() 【发布时间】:2013-02-13 06:11:28 【问题描述】:

谁能告诉我如何使用 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() 传递这些动态值?

【问题讨论】:

【参考方案1】:

@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 连接起来。

【讨论】:

我最终向 元素添加了一个 onclick 事件,该元素附加到使用 Url.Action 设置的 href 属性 但是如果没有那个参数路径是不同的呢?【参考方案2】:

就我而言,只需执行以下操作就可以很好地工作:

控制器:

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

希望这对你有帮助!

【讨论】:

如果您可以将字符串 /Home/DoSomething 替换为 @Url.Action("DoSomething", "TheController"),可能会更加面向未来。这样,如果您重命名控制器和/或操作,您的相关网址仍然有效。【参考方案3】:

此答案可能与问题不是 100% 相关。但它确实解决了这个问题。 我找到了实现这一要求的简单方法。代码如下:

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

在上面的例子中,cust.Id 是一个 AngularJS 变量。但是,可以将其替换为 javascript 变量。

我没有尝试使用此方法传递多个变量,但我希望如果需要也可以将其附加到 Url。

【讨论】:

【参考方案4】:

最简单的方法是:

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

【讨论】:

您真的需要 onclick 事件吗?你能用表单的action 属性做同样的事情吗...

以上是关于使用 Url.action() 传递动态 javascript 值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Url.Action 在 asp.net core 2.0 razor 页面中传递多个操作

Url.Action:如何将参数从视图传递到控制器?

如何在 Url.Action 中传递区域?

如何将正确的 Url.Action 传递给 JQuery 方法而没有额外的 & 号麻烦?

MVC - 将整个模型作为参数传递给 JavaScript 中的 Url.Action

使用 url Action 为标签赋值