如何在c#代码中从本地存储中检索值
本文关键字:存储 检索 代码 | 更新日期: 2023-09-27 18:21:39
我从一个视图在本地存储中传递一个值,我想在c#函数的另一个视图中调用这个值。两个动作结果都在同一个控制器中。我不知道如何在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>
通过传递这个值,现在如何在c#函数的另一个视图中从localstorage
接收这个值作为参数。
本地存储在客户端。它不会发送到服务器,也无法从服务器代码中访问。
如果你在服务器代码中需要它,你必须自己明确地发送它。
实际实现取决于您;我正在分享这个想法。
你的View2控制器应该是这样的:
public ActionResult View2(string value)
{
// ......
ViewBag.StorageItem = value;
return View();
}
无论何时调用该控制器,都要将该值提供给它。在View2中,您可以使用ViewBag.StorageItem
在任何部分检索该值。
注意:ViewBag
是ASP.NET MVC中的动态属性,它不需要类型转换和动态转换类型。
在View2操作方法中设置value
您可以从JavaScript或控制器设置它。
使用JavaScript
var audioElement = document.getElementById(audioId);
if (typeof (Storage) !== "undefined") {
localStorage.setItem("audiourl", audioElement);
document.getElementById("result").innerHTML = localStorage.getItem["audiourl"];
}
// redirecting to View2..
window.location.href = "/controller/view2?value=" + localStorage.getItem["audiourl"];
使用控制器
在这种情况下,如果要将值从一个操作方法传递到另一个,或从视图传递到控制器,则不能使用ViewBag
。为此,您需要一个视图模型属性,可以使用该属性将数据发布回View1的控制器,然后View1可以将此值中继到View2的控制器。
例如:如果视图模型中有一个名为StorageItem
的属性,则可以将其绑定到隐藏字段中的视图中。
HTML
@Html.HiddenFor(x => x.StorageItem)
控制器
[HttpPost]
public ActionResult View1(MyModel model)
{
// Do something with the value
var storageItem = model.StorageItem;
// ....
}
无法使用视图模型
不过,这将是理想的,但如果不能,您仍然可以使用Request.Form["StorageItem"]
访问控制器中的值,如下所示。
HTML
<input type = "hidden" id="StorageItem" name="StorageItem" value="" />
JavaScript
var audioElement = document.getElementById(audioId);
if (typeof (Storage) !== "undefined") {
localStorage.setItem("audiourl", audioElement);
var item = localStorage.getItem["audiourl"];
document.getElementById("result").innerHTML = item;
document.getElementById("StorageItem").value = item;
}
控制器
[HttpPost]
public ActionResult View1(Something something)
{
// ....
var storageItem = Request.Form["StorageItem"];
// ....
// ....
}
提示:如果您使用localStorage
只是为了传递值,那么它在ASP.NET MVC中是无关紧要的。还有更好的选择