![](/img/trans.png)
[英]Passing variables between pages using localStorage and passing variables in a link
[英]Passing variables with different models between razor pages using MVC.
這是控制器ActionResult指向的視圖:
@model MyDTO
@{
ViewBag.Title = "RecoveryHome";
Layout = "~/_AdminLayout.cshtml";
}
<script>
var postPath = '@Url.Action("Upload", "Onsite")';
var pageData =@Html.Raw(Json.Encode(Model))
</script>
其中MyDTO
用於pageData,在_AdminLayout中,
@model MyOtherDTO
<html>
<head>
<script type="text/javascript">
var InitData = @Html.Raw(Json.Encode(Model))
</script>
MyOtherDTO
用於InitData。
但這返回一個異常: The model item passed into the dictionary is of type 'MyDTO', but this dictionary requires a model item of type 'MyOtherDTO'.
一個變量就像用於頁眉部分,其余用於頁面的其余部分,因此將具有不同的模型。 提前致謝。
您只能將一個viewmodel
傳遞給一個視圖,但這並不意味着您只能傳遞一個“ DTO”。
最好不要混淆viewmodel和dto是什么。
public class MyViewData
{
public MyDTO PageData { get; set; }
public MyOtherDTO InitData { get; set; }
}
然后
@model MyViewData
var pageData = @Html.Raw(Json.Encode(Model.PageData))
和
@model MyViewData
var InitData = @Html.Raw(Json.Encode(Model.InitData))
編輯:如果對布局使用基類,則可能會發現這更易於管理,例如:
public abstract class AdminViewModel
{
public MyOtherDTO InitData { get; set; }
}
public class PageViewModel : AdminViewModel
{
public MyDTO PageData { get; set; }
}
那么只要您記得在操作中設置InitData
,就可以在整個管理頁面上重復使用AdminViewModel。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.