Привет, я создаю свое первое приложение MVC 2, и меня очень смущают все примеры, которые я читаю.Я также использую комплект Telerik MVC для их Grid и других подобных элементов управления.
Я прочитал много уроков и посмотрел видео, но не могу понять, где разместить javascript и как обернутьблоки кода в соответствующих тегах.Например, я пытаюсь выполнить задачу связывания Клиента с государством через DropDownList состояний (AZ, CA и т. Д.):
Мой ClientController выглядит следующим образом:
void PopulateStates()
{
var tempRepo = RepositoryFactory.CreateRepostiory<State>(RepositoryType.Business);
var states = tempRepo.QueryAll().ToList();
var svmList = states.Select(s => Mapper.Map<State, StateViewModel>(s));
ViewData["States"] = svmList;
}
public ActionResult Index()
{
PopulateStates();
return View();
}
Index.aspx выглядит следующим образом:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% Html.RenderPartial("ClientGrid"); %>
</asp:Content>
ClientGrid.ascx выглядит следующим образом:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%= Html.Telerik().Grid<ViewModels.ClientViewModel>()
.Name("ClientGrid")
.EnableCustomBinding(true)
.DataKeys(keys =>
{
keys.Add(c => c.Id);
})
.ToolBar(commands => commands.Insert().ButtonType(GridButtonType.Text))
.DataBinding(dataBinding =>
{
dataBinding.Ajax()
.Select("_Select", "Clients", new Telerik.Web.Mvc.GridState())
.Insert("_Insert", "Clients", new Telerik.Web.Mvc.GridState())
.Update("_Save", "Clients", new Telerik.Web.Mvc.GridState())
.Delete("_Delete", "Clients", new Telerik.Web.Mvc.GridState());
})
.Columns(columns =>
{
columns.Bound(c => c.Id);
...
И ClientViewModel.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewModels.ClientViewModel>" %>
<table>
<tr>
<td>
<div class="editor-label">
<%: Html.LabelFor(model => model.StateName) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(model => model.State) %>
<%: Html.ValidationMessageFor(model => model.State) %>
</div>
</td>
</tr>
</table>
Инаконец, шаблон редактора /Shared/EditorTemplates/StateViewModel.ascx
:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewModels.StateViewModel>" %>
<%=
Html.Telerik().DropDownList()
.Name("DropDownList")
.BindTo
(
((IEnumerable<ViewModels.StateViewModel>)ViewData["States"])
.Where(s => s.StateType == "State")
.Select(s => new SelectListItem
{
Text = s.FormattedName,
Value = s.Id.ToString(),
Selected = (Model != null) ? (Model.Id == s.Id) : false
})
)
%>
В общем, я не понимаю, какая часть заканчивается на клиенте, а какая часть скомпилирована на сервере.Я также очень смущен различными примечаниями для лямбд и / или регистрации событий.
Лямбда-материал убивает меня.Я трачу кучу времени, просто пытаясь выяснить, когда использовать new {}
и () =>
....
- Куда идет JavaScript в этих 3 файлах, и нужны ли мне специальные теги дляэто?
- Где я могу использовать тег
<%
против <%=
и <%:
? - Почему иногда внутри
<%
он просит завершить точкой с запятой, как MyFunction();
а иногда это просто MyFunction()
?
Спасибо!