簡體   English   中英

使用MVC在剃須刀頁面之間傳遞具有不同模型的變量。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM