嗨,我正在构建我的第一个MVC 2应用程序,我真的很困惑所有我读的例子。我也为他们的Grid和其他类似的控件使用Telerik MVC套件。ASP.NET MVC 2关于Javascript的困惑
我已经阅读了很多教程和观看过的视频,但是我无法完全理解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();
}
指数。 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);
...
而且ClientV iewModel.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
})
)
%>
一般情况下,我不明白这部分在客户端结束,哪一部分最终在服务器上编译。我也对lambda表达式和/或注册事件的不同符号感到困惑。
拉姆达的东西正在杀死我。我花大量的时间吨只是想弄清楚何时使用new {}
和() =>
....
- 哪里去的JavaScript在这3个文件,并做我需要它特殊的标签?
- 我在哪里可以使用
<%
标签而不是<%=
和<%:
? - 为什么它有时会在
<%
里面用分号结尾,如MyFunction();
和其他时间只是MyFunction()
?
谢谢!
那么什么时候可以混合它们呢?要打开它们之间/关闭标签和括号中的规则 – John 2010-09-30 04:58:37
那么,你可以混合使用JavaScript的任何地方真的...与问候,打开你只需要随时关闭已打开的标签关闭标签 - 括号应该是他们意义。在没有关闭它的情况下在'if'语句中打开标记是没有意义的,与'foreach'语句相同。 – Buildstarted 2010-09-30 05:36:24