我越来越多地发现我的ASP.NET MVC视图需要一些逻辑来执行布局的情况.这些例程在我的模型或控制器中都没有.我有3个选择:
这是让我困惑的最后一个选择.如果逻辑只针对那个视图,那么可以这样做吗?扩展名对每个其他视图的Html对象都是"可见的",并且永远不需要它.
有什么建议?
我在Helper类中创建了一个Html扩展方法,但是我无法让它工作.我已经实现了它,就像在不同的教程上看到的那样.
我的MenuItemHelper静态类:
public static string MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName)
{
var currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
var currentActionName = (string)helper.ViewContext.RouteData.Values["action"];
var sb = new StringBuilder();
if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
sb.Append("<li class=\"selected\">");
else
sb.Append("<li>");
sb.Append(helper.ActionLink(linkText, actionName, controllerName));
sb.Append("</li>");
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
导入命名空间
<%@ Import Namespace="MYAPP.Web.App.Helpers" %>
Run Code Online (Sandbox Code Playgroud)
在我的master.page上实现
<%= Html.MenuItem("TEST LINK", "About", "Site") %>
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息:
找不到方法:'System.String System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper,System.String,System.String,System.String)
编辑: 似乎问题是应用程序名称.该文件夹名为MYAPP-MVC.Web,但在类中它转换为MYAPP_MVC.Web
我只是尝试了一个新的应用程序,它的工作原理
我在CreateDocumentTemplate ciew中有一个下拉列表,
<%=Html.DropDownList("Part", (SelectList)ViewData["Part"])%>
它是从数据库中填充的.我希望这个下拉列表能够自动完成.我怎么能搞清楚这个?
如何显示存储在项目目录外的图像?
有一个简单的方法吗?
ruby html-helper ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我想使用asp.net mvc 3 razor html helper跟随html代码:
<input type="text" .... . placeholder="Login" data-icon="user" />
Run Code Online (Sandbox Code Playgroud)
我试过这个:
@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", data-icon = "user" })
Run Code Online (Sandbox Code Playgroud)
要么
@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", @data-icon = "user" })
Run Code Online (Sandbox Code Playgroud)
显示错误:
Invalid anonymous type members declaration.
Run Code Online (Sandbox Code Playgroud)
这可能是由于数据图标中的破折号未被视为属性.如何在文本框字段中添加数据图标属性.
大家好我已经开始学习ASP.NET MVC,我已经做了一个简单的扩展方法,就像这样
namespace MvcTestz //Project is also named as "MvcTestz"
{
public static class SubmitButtonHelper //extension method.
{
public static string SubmitButton(this HtmlHelper helper,string buttonText)
{
return string.Format("<input type=\"submit\" value=\"{0}\">",buttonText);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我添加了Custom HtmlHelper的命名空间Web.Config,就像这样
<namespaces>
<!--other namespaces-->
<add namespace="MvcTestz"/>
<!--other namespaces-->
</namespaces>
Run Code Online (Sandbox Code Playgroud)
所以我可以在剃刀View中使用intellisense,但它自定义Helper并没有出现在一个View中(Home/View/About.cshtml).

所以在另一个视图中(Home/View/Index.cshtml)我添加了namespace by @using MvcTestz;statement.
在WebApp执行主页(Home/View/Index.cshtml)显示输入按钮文本而不将其呈现为HTML.
在关于页面(Home/View/About.cshtml)服务器生成错误.(点击放大)

HtmlString 如果我想渲染一个Html按钮,应该使用.SOLVED.在MVC项目中,我使用HTML.Label助手,如下所示: -
@Html.Label("FirstName", "First Name", New With {.class = "FieldLabel"})
Run Code Online (Sandbox Code Playgroud)
哪个输出
<label class="FieldLabel" for="FirstName">First Name</label>
Run Code Online (Sandbox Code Playgroud)
我也有这个标签的相应输入.
这可能听起来像一个愚蠢的问题,但如果我只是将直接输出输入到我的视图而不是使用HTML帮助器,那么绝对没有任何区别吗?那么为标签使用HTML帮助器有什么优点/缺点吗?
我尝试创建一些Html Helpers,它将有一个开始标记和结束标记,其中包含其他内容,如Html.BeginForm.例如在Razor中我们可以使用Html.BeginForm帮助器,它具有以下语法:
@using (Html.BeginForm())
{
}
Run Code Online (Sandbox Code Playgroud)
此代码将包含a和中的大括号内容.我用内容解决打开和关闭标记的唯一方法是使用两个html助手.我定义了两个html助手:
public static MvcHtmlString StartForm(this System.Web.Mvc.HtmlHelper helper)
{
return new MvcHtmlString("<form>");
}
public static MvcHtmlString EndForm(this System.Web.Mvc.HtmlHelper helper)
{
return new MvcHtmlString("</form>");
}
Run Code Online (Sandbox Code Playgroud)
然后我使用以下示例使用帮助程序:
@Html.StartForm()
contents
@Html.EndForm()
Run Code Online (Sandbox Code Playgroud)
但我希望能够制作一个html助手,它在视图中具有以下格式:
@using (Html.MyForm())
{
<text>contents</text>
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题,因为我甚至不知道如何搜索它.
如何在App_Code文件夹的Razor助手中使用Url.Action()?
我试过根据为什么我不能在App_Code文件夹中的剃刀助手视图文件中使用Html.RenderPartial?
@using System.Web.Mvc.Html
@helper Tabel(System.Web.Mvc.HtmlHelper html)
{
@Html.Raw(Url.Action("Index", "Home"))
}
Run Code Online (Sandbox Code Playgroud)
但得到了编译错误
CS0103:当前上下文中不存在名称"Url"
使用ASP.NET MVC4和jquery.
我正在使用Html助手创建一个复选框.在某些情况下,我想将该disabled属性添加到htmlAttribute对象中.我有以下代码:
@if (Model.IsAuthorized)
{
@Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class" })
}
else
{
@Html.CheckBoxFor(x => @Model.Property, new { @class = "input-class", @disabled = "disabled" })
}
Run Code Online (Sandbox Code Playgroud)
我想让这段代码更简洁.有没有办法在一行中有条件地添加某些html属性/没有块条件?