我有这个控制器:
public ActionResult MyController(string myString)
{
return View((object)myString);
}
我试图将字符串传递给这样查看:
@model string
@Html.EditorFor(m => m)
我得到的值不能为空错误。我怎样才能解决这个问题?感谢。
答案 0 :(得分:4)
首先,我建议您更改Action方法名称。为什么你把它命名为MyController。它应该是一个有意义的方法名称。
然后来讨论你的问题。如果您的视图仅用于显示目的,而不是用于表单发布,那么您可以在viewbag
中绑定字符串并在视图中进行渲染。
例如,在您的操作方法中,
ViewBag.MyString = myString;
在您看来,
<p>@ViewBag.MyString</p>
但是如果你想在视图中编辑你的字符串并在点击提交按钮后,它应该将值发布到服务器,然后创建一个view model
,例如,
public class MyStringModel
{
public string MyString { get; set; }
}
在你的行动方法中,
public ActionResult MyController(string myString)
{
MyStringModel = new MyStringModel();
MyStringModel.MyString = myString;
return View(MyStringModel)
}
然后在你看来,
@model MyStringModel
@Html.EditorFor(m => m.MyString)
请注意,您需要在视图中将@HTML.BeginForm
和submit button
添加到post back
字符串数据中。
希望它有所帮助。
答案 1 :(得分:-1)
此外,您可以使用ViewBag,ViewData,TempData将信息传递到您的视图,并使用不同的信息生命周期。
检查一下: http://royalarun.blogspot.com.ar/2013/08/viewbag-viewdata-tempdata-and-view.html
使用您的示例,模型与字典相关联,因此您无法直接使用此属性。
对于您的示例,只从控制器传递一个字符串,您可以这样做:
public ActionResult MyController(string myString)
{
return View(型号:myString);
}
和.cshtml(如果你使用c#)
@model string
@{
var text = Model;
}
@Html.EditorFor(m => text);
但我认为这是一个更好的解决方案,传递一个带有@Stephen Muecke响应等字符串属性的viewMoedel Prefill Html Editor Asp.net MVC