2016-03-06 5 views
0

хорошо, это было несколько недель, так как я начал программирования в ASP.NET MVC, и я наткнулся на несколько вопросов, я следовал учебник майкрософт введение в этой ссылке:Некоторые проблемы с ASP.NET MVC

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

есть 3 вещи, которые я не могу понять очень хорошо

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

что это за странный синтаксис, где я могу его узнать, что означает, что m ?? Я изучил sql-синтаксис и немного отличается от этого: S.

3- лямбда-выражения в этом случае, как это работает ???

для примера: movies = movies.Where (s => s.Title.Contains (searchString));

хорошо, что я на самом деле нужно в этом случае является то, что кто-нибудь объяснить мне, что я спросил, и как поток в этом случае работает причина его любопытное запутанных спасибо:) ``

ответ

0
  1. Перед Контроллер будет называться , MVC-форму анализа формы MVC и попытаться автоматически сопоставить поля и параметры запроса с аргументами метода. Да, это действительно круто !!!

  2. Это LinqToSql. Попробуйте найти это ключевое слово. Сначала я нашел this one

  3. На самом деле это выражение Linq. s - это некоторая запись в фильмах dataset и s.Title.Contains (searchString) будет фильтровать фильмы по названию. Когда выражение будет выглядеть как s => true - эта запись будет сопоставлена ​​и будет добавлена ​​в результат выражения.

Update 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

Thats, что я имею в виду, что POST отправляет searchString вправо? Но когда это работает, например, с PHP, я могу получить значение с $ _post [name] здесь, я хочу знать, где это «имя». Надеюсь, я сделал правильное объяснение – caxinaswin

+0

@caxinaswin - на основе вашего комментария, кажется, вы смущены привязкой к модели (или привязкой параметров). В этом случае структура MVC просматривает ваши опубликованные значения и видит, что вы публикуете значение с тем же именем, что и ваш параметр, поэтому он создает параметр и автоматически заполняет его значением. –

+0

Правда, я немного смущен тем, что MVC im изучает очень медленно, и некоторые уроки не очень хорошо объясняют мелочи, Су, что вы говорите, что если я создам вход = «текст» в индексе представления и отправлю форму, которую он отправляет форму на той же странице, и на этот раз он отправляет searchString в качестве параметра? – caxinaswin

1
  1. Существуют определенные соглашения, применяемые здесь. Html.BeginForm() создаст тег формы с атрибутом действия, указывающим на /ControllerName/Index, или просто /ControllerName, предполагая, что индекс можно опустить. Вы можете заметить еще одно соглашение здесь return View(movies);. Сначала будет показан вид Views/ControllerName/ActionName.cshtml.

  2. Это Синтаксис запроса от LINQ. Он очень похож на SQL.

  3. Снова LINQ в действии. Здесь приведен пример синтаксиса метода .
+0

спасибо, я просто не могу получить его, как сообщение отправляет поисковую строку на контроллер: S – caxinaswin

Смежные вопросы