如何在 ASP.NET MVC5 中将字符串从控制器传递到视图

nov*_*ice 2 asp.net asp.net-mvc razor

我有这个控制器:

public ActionResult MyController(string myString)
{
    return View((object)myString);
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将字符串传递给这样的视图:

@model string
@Html.EditorFor(m => m)
Run Code Online (Sandbox Code Playgroud)

我得到值不能为空错误。我怎样才能解决这个问题?谢谢。

Bas*_*tia 6

首先,我建议更改您的 Action 方法名称。为什么你把它命名为 MyController。它应该是一个有意义的方法名称。

然后来解决你的问题。如果您的视图仅用于显示目的,而不用于表单发布,那么您可以将字符串绑定在 a 中viewbag并在您的视图中呈现。

例如,在您的操作方法中,

ViewBag.MyString = myString;
Run Code Online (Sandbox Code Playgroud)

而在你看来,

<p>@ViewBag.MyString</p>
Run Code Online (Sandbox Code Playgroud)

但是如果你想在视图中编辑你的字符串并在点击提交按钮后,它应该将值发布到服务器,然后创建一个view model,例如,

public class MyStringModel
{
  public string MyString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在您的操作方法中,

public ActionResult MyController(string myString)
{
  MyStringModel = new MyStringModel();
  MyStringModel.MyString = myString;
  return View(MyStringModel)
}
Run Code Online (Sandbox Code Playgroud)

那么在你看来,

@model MyStringModel
@Html.EditorFor(m => m.MyString)
Run Code Online (Sandbox Code Playgroud)

看,您需要在您的视图中添加@HTML.BeginForm和 asubmit buttonpost back您的字符串数据。

希望能帮助到你。