2016-12-04 145 views
0

我讀this,並試圖實現我的應用程序的ViewDataDictionary但沒有工作從View傳遞數據部分。在.NET CORE

在我看來,我有下面的代碼:

@{ 
    var myTest = new 
      { 
       UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78", 
       UserName = "iggy", 
      }; 

} 
@Html.Partial("~/Partials/test.cshtml", myTest) 

test.cshtml很簡單,當我寫@Model,我得到{ UserId = cdb86aea-e3d6-4fdd-9b7f-55e12b710f78, UserName = iggy }

我怎樣才能提取此作爲JSON,所以我可以讀@Model.UserName

我試着使用:

<script type="text/javascript"> 
@ 
    { 
     <text> 
      var obj = JSON.parse(@Model); 
     </text> 
    } 
</script> 

,並試圖:

<script type="text/javascript"> 
     @:var obj = JSON.parse(@Model); 
</script> 

,並試圖:

@Html.Raw(Json.Encode(object)) 

但是毫無效果,任何幫助!

+0

請出示使用這些代碼塊時呈現的HTML。 – CodeCaster

+0

@CodeCaster請親切看到我對Haim的回答,因爲我正從手機寫這篇文章,難以複製/粘貼我的提交。謝謝 –

+0

你可以使用類型類/對象而不是匿名類型嗎?這樣你就不會使用智能感知。 – alltej

回答

0

我遇到類似的問題來了,當我將我的.NET應用程序到.NET的核心。 在.NET我可以只返回JSON(jsonModel)在我的控制器,並用它在我看來,作爲data.UserIDdata.UserName(見下文調整代碼以匹配您的樣品)。 在.net內核中,我必須先在我的控制器中使用SerializeObject,然後在視圖javascript部分中使用JSON.parse才能使其工作。

在.NET CORE以下的作品。假設你有一些模型:

public class SomeModel 
{ 
    public string UserId { get; set; } 
    public string UserName { get; set; } 
} 
在你的控制器返回JSON對象

using Newtonsoft.Json; 

[HttpPost]   
public IActionResult someAction() 
{ 
    SomeModel jsonModel = new SomeModel(); 
    jsonModel.UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78"; 
    jsonModel.UserName = "iggy"; 

    var serializedJsonModel = JsonConvert.SerializeObject(jsonModel); 
    return Json(serializedJsonModel); 
} 

,並在您的視圖JavaScript部分你可以從你的模型值:

<script type="text/javascript"> 
    $.post("@Url.Action("someAction", "YourController")", 
     function (data) { 
      var oJson = JSON.parse(data); 
      UserId = oJson.UserId; 
      UserName = oJson.UserName; }); 
</script> 
0

如果您只對匿名類型的JSON序列化感興趣,可以簡單地聲明局部的@modelobject

在你的主觀點:

@{ 
    var myTest = new 
    { 
     UserId = "cdb86aea-e3d6-4fdd-9b7f-55e12b710f78", 
     UserName = "iggy", 
    }; 
} 

@Html.Partial("~/Partials/test.cshtml", myTest) 

而在你test.cshtml部分:

@model object 

<script type="text/javascript"> 
    var obj = @Html.Raw(Json.Encode(Model)); 
</script> 
+0

:(不幸的是沒有與我的案件 –

+0

@HasanAYousef,究竟是什麼「不起作用」?是否有錯誤? – haim770

+0

好吧,我的情況有點不同,因爲我正在做的是將'view'轉換爲'string',它迄今在視圖和partials中都能正常工作,但是一旦需要讀取'部分'作爲'JSON'發生了一些事情,並且頁面沒有出現,我正在使用此示例http://stackoverflow.com/a/40950901/2441637'api/returnView',我可以通過電子郵件該文件如果感興趣。 –

相關問題