Javascript Jquery没有';无法按预期更新属性

Javascript Jquery没有';无法按预期更新属性,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一个MVC应用程序,在我的一个页面上,作为显示的一部分,我将根据用户选择的单选按钮呈现两个部分中的一个。这一位都可以正常工作,但我在主窗体上有一个按钮,我需要设置/重置值,这些值将根据用户选择传递给我的控制器。该按钮在我的主窗体上声明为: @Html.GlobalModalAuthorizeButton("Upload Document", "Upload", "Documents", new { serviceUserId = Model.ServiceUser.Id, folderId

我有一个MVC应用程序,在我的一个页面上,作为显示的一部分,我将根据用户选择的单选按钮呈现两个部分中的一个。这一位都可以正常工作,但我在主窗体上有一个按钮,我需要设置/重置值,这些值将根据用户选择传递给我的控制器。该按钮在我的主窗体上声明为:

@Html.GlobalModalAuthorizeButton("Upload Document", "Upload", "Documents", new { serviceUserId = Model.ServiceUser.Id, folderId = Model.CurrentFolderId, viewType = Model.ViewTypes.ToString() }, new { @class = "icon upload btn-primary" })
最初呈现此页面时,viewtype设置为用户最初看到的默认视图。当用户更改视图时,viewtype似乎不会得到更新。因此,从已加载的部分,我尝试将值设置为正确的值。如果我执行以下操作,请使用Chrome浏览器开发工具:

 $(this).parent().parent().parent().parent().find($('.upload')).attr('data-url').replace('FileView', 'TreeView');
它在控制台窗口中返回我想要的值(我的想法是在用户按下按钮之前在按钮上设置值)。问题在于,上面的内容似乎并没有真正改变按钮上的数据url属性,因此当点击控制器时,“文件视图”仍然会通过。

对于完整属性:

var new_attr = "/ServiceUser/Documents/Upload?serviceUserId=21&viewType=FileView";

$(this).parent().parent().parent().parent().find($('.upload')).attr('data-url', new_attr); 

或者,正如@Rup已经建议的,您应该首先获得原始属性值,使用
替换
方法修改该值,然后重新分配新属性。

jQuery获得了一种读取和写入数据属性的特殊方法:

var uploadButton = $(this).parent().parent().parent().parent().find('.upload');
var currentUrl = uploadButton.data('url');
uploadButton.data('url', currentUrl.replace('FileView', 'TreeView'));

$(this.parent().parent().parent().parent().find($('.upload')).attr('data-url','TreeView');如果要将属性更改为
TreeView
,请尝试此操作。是否希望值为TreeView而不是FileView@迈克跑得更快,这就是答案!Mike是对的,但如果不清楚的话:
.attr
不会给你元素上的值的引用,它只给你当前的值。除非你像他建议的那样直接重写,否则你需要读取值,修改它,然后再写回去。顺便说一句,你能想出一个更好的方法来做很多父母的事情吗?e、 g.将一个类放在您要查找的类上,并执行单个.parent调用来查找它?@Mike完整属性有:
/ServiceUser/Documents/Upload?serviceUserId=21&viewType=FileView“
不是吗?这样我们就可以使用
data
方法获取值,但无法设置它(只能设置一次,不能再次设置)?感谢您的回复和演示:)