我从一个视图传递一个值到本地存储,我想在另一个视图中调用这个值。两个动作结果在同一个控制器中。我不知道如何在c#中调用这个本地存储值,有谁能帮我吗?
view1.cshtml:
<script>
...
var audioElement = document.getElementById(audioId);
// Check browser supporta
if (typeof (Storage) !== "undefined") {
//Store
localStorage.setItem("audiourl", audioElement);
//Retrieve
document.getElementById("result").innerHTML = localStorage.getItem["audiourl"];
}
</script>
<div id="result"></div>
通过这样做,这个值已经被传递,现在如何从localstorage
在另一个视图中接收这个值在c#函数中作为参数。
2条答案
按热度按时间iklwldmw1#
本地存储在客户端。它不会被发送到服务器,并且不能从服务器代码访问。
如果您在服务器代码中需要它,则必须自己显式发送它。
omqzjyyz2#
实际执行由您决定;我在分享这个想法。
你的View 2控制器应该看起来像这样:
每当调用此控制器时,都将该值提供给它。在View 2中,您可以使用
ViewBag.StorageItem
在任何节中检索此值。注意:
ViewBag
是ASP.NET MVC中的动态属性,不需要类型转换,可以动态转换类型。在View 2动作方法中设置
value
您可以从JavaScript或控制器设置它。
使用JavaScript
使用控制器
在这种情况下,如果你想把值从一个动作方法传递到另一个动作方法,或者从一个视图传递到一个控制器,你就不能使用
ViewBag
。为此,您需要一个视图模型属性,您可以使用该属性将数据发送回View 1的控制器,然后View 1可以将此值中继到View 2的控制器。例如:如果在视图模型中有一个名为
StorageItem
的属性,那么可以将其绑定到视图中的隐藏字段中。超文本标记语言
控制器
不能使用视图模型?
这将是理想的,但万一你不能,那么你仍然可以访问控制器中的值使用
Request.Form["StorageItem"]
如下。超文本标记语言
JavaScript
控制器
***提示:*如果你使用
localStorage
只是为了传递值,那么它在ASP.NET MVC中是无关紧要的。有更好的选择。