2016-09-19 59 views
3

我想從我的控制器獲取一個整數值到我的視圖,然後將該值作爲隱藏字段添加到稍後在我的JavaScript客戶端代碼中使用。ASP MVC-模型爲空

我在嘗試添加隱藏字段時遇到異常。

下面是步驟來重現:

我CSHTML頁:

@model Int32 
@{ 
    ViewBag.Title = "GetGeneric"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

@section DetailJavascript 
{ 
    @Scripts.Render("~/Scripts/Generic.js") 
} 

@Html.HiddenFor(model => model, new { id = "GenericID" }); 

<h2>GetGeneric</h2> 

這裏是我的控制器代碼:

public ActionResult GetCategoryDetail(int id) 
     { 

      Object p = id; 

      return View(p); //I added a breakpoint here and the value of variable 'p' is not null !! 
     } 

編輯: 異常詳細信息

enter image description here

謝謝!

+0

什麼異常?你爲什麼要傳遞'object'而不是'int'(應該只是'return View(id);' –

+0

爲什麼你需要'id'? – nbokmans

+0

我必須使用object類來使用視圖構造器@Stephen Muecke – TiagoM

回答

0

謝謝@ freedomn-m,我認爲你是對的。 無論如何,我想知道如何使用HiddenFor模型作爲單個對象(字符串/整數),因爲如果我使用我不能dynamycally設置編號正確?因爲它不是一個asp控件,而是一個html控件。我使用下面的解決方案(我試圖避免一個模型類,因爲我真的只是單一的int /字符串id屬性)得到了修復。

CSHTML

@model MyNameSpace.Models.FrontendModel 
@Html.HiddenFor(model => model.categoryId, new { id = "DetailCategoryId" }); 

控制器

public ActionResult GetCategoryDetail(int id) 
{ 
    return View(new FrontendModel() { categoryId = id}); 
} 

模型

public class FrontendModel 
{ 
    public int categoryId { get; set; } 
} 

PS:如果有人知道如何使用單個對象(字符串或整數)有模型請解釋我,我真的很感激。謝謝!

-1

DarkLink我想這是你的[GET]動作,那麼id在執行時有一些價值嗎?我想應該是這樣的:

public ActionResult GetCategoryDetail(int id = 0) 
{ 
    return View(id); 
} 

然後,如果你不自己設置id它會始終將0和你沒有null例外。

+0

閱讀問題..我添加了斷點,id有值...謝謝 – TiagoM

+0

'p'的值,但是如果沒有上傳到Object,只需返回View(id) – Marcin

1

改變你的隱藏字段代碼將其與對象可以作爲模型

@Html.Hidden("GenericID",Model==null?string.Empty:Model.ToString());