我试图从我的控制器获取一个整数值到我的视图,然后将该值添加为隐藏字段,以便稍后在我的JavaScript客户端代码中使用。
我在尝试添加隐藏字段时遇到异常。
以下是重现的步骤:
我的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 !!
}
编辑: 例外详细信息
谢谢!
答案 0 :(得分:1)
将隐藏的字段代码更改为对象作为模型
@Html.Hidden("GenericID",Model==null?string.Empty:Model.ToString());
答案 1 :(得分:0)
谢谢@ freedomn-m,我觉得你是对的。 无论如何我想知道如何使用HiddenFor和Model作为单个对象(string / int),因为如果我使用我不能动态地设置id对吗?因为它不是一个asp控件,而是一个HTML控件。
我使用以下解决方案修复了它(我试图避免使用Model Class,因为我只是单个int / string id属性)。
<强> CSHTML 强>
@model MyNameSpace.Models.FrontendModel
@Html.HiddenFor(model => model.categoryId, new { id = "DetailCategoryId" });
<强> CONTROLLER 强>
public ActionResult GetCategoryDetail(int id)
{
return View(new FrontendModel() { categoryId = id});
}
<强> MODEL 强>
public class FrontendModel
{
public int categoryId { get; set; }
}
PS:如果有人知道如何使用单个对象(string或int)有型号请解释我,我真的很感激。谢谢!
答案 2 :(得分:-1)
DarkLink我想这是你的[GET]
动作,id
在执行时有一些价值吗?我认为它应该是这样的:
public ActionResult GetCategoryDetail(int id = 0)
{
return View(id);
}
然后,如果您没有自己设置id
,那么它将永远是0
,并且您没有null
例外。