@Html.HiddenFor(model => model.CreatedBy, new { @value=currentInfo.UserID})  value始终是null
@Html.TextBoxFor(model => model.CreatedBy, new { @value=currentInfo.UserID})
这样子value就会有值


把value 的V改大写 就可以了
@Html.HiddenFor(model => model.RenyuanID, new { @Value = @ViewData["renyuanID"] }


http://codego.net/334085/
1. 你有一个视图模型,而不是ViewData的?强类型的辅助与结束For并采取了lambda表达式不能与弱类型结构,如工作ViewData。 个人而言,我不要'的ViewData / ViewBag。我定义视图模型,并有我的控制器动作通过这些视图模型我的views。 例如,在你的情况我会定义一个视图模型:
public class MyViewModel
{
 [HiddenInput(DisplayValue = false)]
 public string CRN { get; set; }
}
有我的控制器动作填充此视图模型:
public ActionResult Index()
{
 var model = new MyViewModel
 {
  CRN = "foo bar"
 };
 return View(model);
}
再有我强类型视图EditorFor助手:
@model MyViewModel
@Html.EditorFor(x => x.CRN)
这将
<input id="CRN" name="CRN" type="hidden" value="foo bar" />
在生成的HTML。 
2. 请记住第二to@Html.HiddenFor只会设定值时,它无法找到路径或模式匹配的数据字段。达林是正确的 CodeGo.net,使用视图模型。 
3. 我相信这是一个简单的解决方案。 您Html.Hidden而不是Html.HiddenFor。看:
@Html.Hidden("CRN", ViewData["crn"]);
这将创建一个INPUT的标签type="hidden",与id="CRN"name="CRN",和里面的正确值value属性。 希望它可以帮助! 
4. 在MVC 4以下工作
@Html.HiddenFor(x => x.CRN, new { @Value = "1" });
你需要在@价值一资'V' 这里是我的模型
public int CRN { get; set; }
这里是输出的是当你看到在浏览器
<input value="1" data-val="true" data-val-number="The field CRN must be a number." data-val-required="The CRN field is required." id="CRN" name="CRN" type="hidden" value="1"/>
这里是
[HttpPost]
public ActionResult MyMethod(MyViewModel viewModel)
{
 int crn = viewModel.CRN;
}