我是MVC的新手,在过去的4年里一直在使用web表单,但最近转到了MVC,我发现这很不一样。
我创建了一个名为basicoperations.cs的存储库,它只包含一个返回类型为bool。然后是一个包含两个属性的模型名称、密码,然后是一名控制器控制器,该控制器包含一个单一操作结果方法并强绑定到一个视图。
当我填充前端的2个文本框时,它会将其提交给数据库。好的我理解,但我觉得困惑的是:
public ActionResult AddStories2(Stories st)
{
Stories s2 = new Stories();
basicoperations bo = new basicoperations();
if (bo.insertImages(st))
{
ViewBag.Message = "Added";
}
else
{
ViewBag.Message = "Failed";
}
return View("AddStories");
}
如果视图与模型强绑定,则1.为什么我仍然需要一个Stories对象作为参数?2.既然对象故事s2是绑定的,为什么它包含null?
我真的不理解你的问题。逐步澄清:
-
这是一个在提交您提到的表单时从视图中调用的操作方法。如果你的视图有两个字段名称和密码,我想你的模型Stories是这样的(我想你说的是两个表单,因为你的登录模型不叫Stories,但根据我所掌握的信息,我试图澄清一些事情):
public class Stories { public string name { get; set; } public string password { get; set; } }
-
如果你的帖子提交正确,那么对象Stories st应该具有用户的输入值。
-
对象Stories s2在您的操作中被实例化,并且永远不会给该对象赋值。类似的东西:
s2.name = "something"; s2.password = "somethingElse"
所以应该清楚它为空的原因。否则,您可以实例化这样的对象:
Stories s2 = new Stories(){ name = "something", password = "somethingElse"}
由于您返回的视图不需要模型或任何值,并且您只返回具有Viewbag值的视图,因此不必将对象Stories用作参数。如果您的View"AddStories"使用的是像这样的模型
@model Stories
在开始时,您必须传递一个模型。但是,如果您实际上并没有像所暗示的那样使用模型的任何值,那么只需从视图中删除这一行即可。