[英]Some Problems with ASP.NET MVC
好吧,自从我开始在ASP.NET MVC中编程以来已经有几个星期了,我遇到了几个问题,我在此链接中关注了Microsoft教程:
http://www.asp.net/mvc/overview/getting-started/introduction/adding-search
我无法很好地理解三件事
1-在有关ASP.NET中搜索的示例中,我无法获得如何将searchString从视图中的表单传递到控制器的信息
public ActionResult Index(string searchString) //this searchString in the controller
{
var movies = from m in db.Movies
select m;
if (!String.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
return View(movies);
}
剃刀语法
@using (Html.BeginForm()){
<p> Title: @Html.TextBox("SearchString") <br />
<input type="submit" value="Filter" /></p>
}
视图在哪里将字符串发送到控制器???
2-var电影=从db中的m开始,Movies选择m;
这个奇怪的语法是什么,我在哪里可以学到,m意味着什么? 我学习了sql语法,它与:S有点不同。
3- lambda表达式在这种情况下是如何工作的?
例如:电影=电影。where(s => s.Title.Contains(searchString));
好吧,我在这种情况下真正需要的是有人向我解释我的要求以及这种情况下的流程是如何造成令人困惑的感谢的:)''
这里有某些约定。 Html.BeginForm()
将产生一个表单标签,其动作属性指向/ControllerName/Index
,或者简单地假设假设可以省略Index的/ControllerName
。 您可能会注意到另一种约定,这里return View(movies);
。 该视图将首先作为Views/ControllerName/ActionName.cshtml
。
这是LINQ的 查询语法 。 它与SQL非常相似。
在调用Controller之前,MVC框架将解析表单的POST,并尝试将字段和查询参数自动映射到方法参数。 是的,真的很棒!!!
是LinqToSql 。 尝试找到这个关键词。 首先我发现是这个
其实这是Linq的表达。 s是电影数据集中的一些记录,并且s.Title.Contains(searchString)将按标题过滤电影。 当表达式变得像s => true时 -该记录将被匹配并将被添加到表达式结果中。
更新01:
我可以建议使用
@Html.TextBoxFor(model => model.SearchString)
作为您的替代品
@Html.TextBox("SearchString")
因为更多是关于我们使用的所有MVC。 通常,Contoller会将具有填充的SearchString属性的View模型传递给View(实际上只是简单的类)。 在视图的顶部,您将看到以下内容:
@model SomeNamespace.SomeModelClass
它描述了您的视图模型。
在Controller中,您将具有:
var model = new SomeModelClass(){SearchString = "something"};
return View("Index", model)
我相信就是这样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.