2016-03-06 70 views
0

嗯,這是因爲我在ASP.NET MVC編程開始,我有幾個問題碰到過幾周的幾個問題,我遵循了這個鏈接教程微軟介紹:與ASP.NET MVC

http://www.asp.net/mvc/overview/getting-started/introduction/adding-search

有3個東西,我不能很瞭解

1 - 大約在ASP.NET中的搜索的例子,我不能讓它如何搜索字符串從表格視圖傳遞給控制器​​

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 movies = from m in db.Movies select m;

什麼是這種奇怪的語法,我可以在哪裏學習它,什麼意思是m?我學習了SQL語法,它與此有點不同:S。

3-在這種情況下的lambda表達式如何工作?

for example:movies = movies.Where(s => s.Title.Contains(searchString));

清楚我真的需要在這種情況下,有人給我解釋一下我問及如何在這種情況下,流動工作原因它有點混亂 感謝:)``

回答

0
  1. 之前控制器將被稱爲,MVC框架解析表單的POST並嘗試自動將字段和查詢參數映射到方法參數。是的,這真的很酷!

  2. 這是LinqToSql。試着找到這個關鍵詞。首先我發現是this one

  3. 其實這是Linq表達。 s電影中的某條記錄數據集和s.Title.Contains(searchString)將按標題過濾電影。當表達式變得像s => true - 該記錄匹配並將被添加到表達式結果中。

更新01:

我可能會建議使用

@Html.TextBoxFor(model => model.SearchString) 

作爲替代你

@Html.TextBox("SearchString") 

因爲它更多的是什麼,所有的MVC我們使用。按照常見的方式,Contoller將傳遞給查看一些模型(實際上它只是簡單的類)與充滿SearchString屬性。在你看來,你會看到類似的東西:

@model SomeNamespace.SomeModelClass 

它描述了你的視圖的模型。

在控制器,你將有:

var model = new SomeModelClass(){SearchString = "something"}; 
return View("Index", model) 

我相信這是它。

+0

那就是我的意思,那個POST發送searchString的權利?但是,當它適用於PHP例如我可以通過$ _post [name]訪問值,我想知道'name'在哪裏。我希望我做了正確的解釋 – caxinaswin

+0

@caxinaswin - 基於您的評論,似乎你對模型綁定(或參數綁定)感到困惑。在這種情況下,MVC框架正在查看您的發佈值,並發現您發佈的參數名稱與您的參數名稱相同,因此它會創建一個參數並自動填充該值。 –

+0

真的,我有點困惑MVC即時學習真的很慢,一些教程不解釋真的很好的小東西,所以你說的是,如果我在視圖索引中創建一個輸入=「文本」並提交他提交的表單窗體在同一頁面,這次他發送searchString作爲參數? – caxinaswin

1
  1. 這裏應用了某些約定。 Html.BeginForm()將產生一個表單標籤,其中動作屬性指向/ControllerName/Index,或簡單地/ControllerName,假定索引可以省略。 你可以在這裏注意到另一個約定事物return View(movies);。該視圖將首先搜索爲Views/ControllerName/ActionName.cshtml

  2. 這是查詢語法LINQ。它非常類似於SQL。

  3. 再次LINQ在行動。這裏我們有一個方法語法的例子。
+0

謝謝,我只是不能得到它如何後發送搜索字符串到控制器:S – caxinaswin