我想知道,如果可能的话,使用新的剃刀视图引擎渲染局部的最佳方法.我知道这是当时没有完全完成的事情
现在我使用RenderPage来呈现用户控件:
@RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model)
Run Code Online (Sandbox Code Playgroud)
调用RenderPage的页面使用布局(主)页面,其中定义了三个部分:TitleContent,HeadContent和Maincontent.当我尝试从此页面渲染我的语言环境控件时,似乎还需要这些部分 - 它们应该只在调用页面中需要并且存在.我收到以下消息,无论我是否在部分视图中包含这些部分(显然我不想包含这些部分,但它似乎是一个有趣的调试点......).
以下部分已定义,但尚未在布局页面'〜/ Views/Shared/LocaleUserControl.cshtml'上呈现:TitleContent; HeadContent; 搜索Maincontent
我的部分观点如下(改编自以下链接):
@inherits System.Web.Mvc.WebViewPage<LocaleBaseModel>
@using System.Web.UI;
<p>
@Html.LabelFor(model => Model.CountryName)
<br />
@Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"})
</p>
<p>
@Html.LabelFor(model => Model.StateProvince)
<br />
@Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = "text", accesskey="t" })
</p>
<script type="text/javascript">
$(function () {
var countries = $("#CountryName");
var statesprovinces = $("#StateProvince");
countries.change(function () {
statesprovinces.find('option').remove();
var url = '@Url.Action("GetStatesProvinces", "Base")';
$.getJSON(url, { countryId: countries.val() }, …Run Code Online (Sandbox Code Playgroud) 如何在ASPNET.MVC Razor中使用自定义控件?
我想在Razor视图上使用自定义控件.例如:
<mycontrols:something>@Model.MyVar</mycontrols:something>
Run Code Online (Sandbox Code Playgroud)
要么
<mycontrols:something myattribute="@Model.MyVar" />
Run Code Online (Sandbox Code Playgroud)
请注意,我的目标是仅使用从MvcControl派生的少数控件,仅用于琐碎的重复ui内容.
我试图在视图的顶部找到类似于@Register的语法,但没有任何成功.
然后我去了web.config,添加
<pages>
<controls>
<add tagPrefix="mycontrols" namespace="mynamespace" assembly="myassembly"/>
</controls>
</pages>
Run Code Online (Sandbox Code Playgroud)
但看起来在渲染时会忽略自定义控件.
有人可以帮忙吗?
...可能有点老式,但有时也可以使用自定义控件来使代码更清洁!