更新ActionLink HTML属性

时间:2014-02-24 11:55:17

标签: jquery asp.net-mvc asp.net-mvc-4

我在这里或其他地方看到的很多答案都使用了条件if语句,数据从Controller传递到View,这不是我的方式能做到这一点。

我的页面上有ActionLink根据所选的下拉值显示或隐藏。我使用的jquery如下

$(function checkTotalRows() {
    if ($('#productParameters>tr').length > 0) {
        var link = document.getElementById('AddNewItem');
        $('#AddNewItem').hide();

    } else {
        $('#AddNewItem').show();
    }
});

这将显示/隐藏以下内容:

@Html.ActionLink("Add New Product", "AddProduct", new { productId= ?}, new {@id="AddNewItem" })

我遇到的问题是我列出HTML attribute的{​​{1}},我不知道如何通过new { productId = ? }设置此项,或者即使可能这样做?的?给出productId的价值只是我在这篇文章中的说法我不知道什么,除了明确说明Model.something,应该去那里。

我是否可以通过某种方式将ID传递给此属性?

2 个答案:

答案 0 :(得分:2)

我建议您在-1中使用?代替new { productId= -1}。基本上使用-1作为占位符,您可以使用所需的产品ID替换后者

@Html.ActionLink("Add New Product", "AddProduct", new { productId= -1}, new {@id="AddNewItem" })

要替换它使用使用jQuery .prop()函数,您可以获取href属性并像

一样更新它
var elem = $('#AddNewItem');
var newUrl = elem.prop('href').replace('-1', 'YourProductId');
elem.prop('href', newUrl);

答案 1 :(得分:0)

如果您认为页面中只有一个Id=AddNewItem,并且您的模型中设置了产品ID

@Html.ActionLink(
    linkText: "Add New Product",
    actionName: "AddProduct",
    controllerName: "Product",
    routeValues: new {
        productId= Model.ProductId
    },
    new {@id="AddNewItem"}
)