标签: html-helper

HTML.ActionLink方法

假设我有一堂课

public class ItemController:Controller
{
    public ActionResult Login(int id)
    {
        return View("Hi", id);
    }
}
Run Code Online (Sandbox Code Playgroud)

在不在Item文件夹中的页面上ItemController,我想创建一个指向该Login方法的链接.那么Html.ActionLink我应该使用哪种方法以及我应该传递哪些参数?

具体来说,我正在寻找替代方法

Html.ActionLink(article.Title,
    new { controller = "Articles", action = "Details",
          id = article.ArticleID })
Run Code Online (Sandbox Code Playgroud)

已经在最近的ASP.NET MVC化身中退役了.

.net c# asp.net-mvc html-helper actionlink

241
推荐指数
8
解决办法
68万
查看次数

如何删除html超链接'a'标签的默认链接颜色?

默认链接颜色为蓝色.如何删除html超链接标记的默认链接颜色<a>

html css anchor html-helper

211
推荐指数
7
解决办法
41万
查看次数

如何使用Html.TextBoxFor设置默认值?

简单的问题是,如果您使用ASP.NET MVC Framework 1中的Html Helper,则很容易在文本框上设置默认值,因为存在过载Html.TextBox(string name, object value).当我尝试使用Html.TextBoxFor方法时,我的第一个猜测是尝试以下哪些不起作用:

<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>
Run Code Online (Sandbox Code Playgroud)

我现在应该坚持使用Html.TextBox(字符串,对象)吗?

c# html-helper asp.net-mvc-2

195
推荐指数
11
解决办法
26万
查看次数

如何将类属性添加到MVC的HTML Helpers生成的HTML元素中?

例如@Html.ActionLink(),ASP.NET MVC可以使用HTML Helpers生成HTML元素,@Html.BeginForm()依此类推.

我知道我可以通过创建一个匿名对象来指定表单属性,并将该对象传递给(在本例中为第四个)htmlAttributes参数,其中id为元素指定一个:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
Run Code Online (Sandbox Code Playgroud)

class属性怎么样?显然这不起作用:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
Run Code Online (Sandbox Code Playgroud)

因为在请求我的视图时,它只会抛出随机语法错误,因为它在遇到C#关键字后需要其他东西class.

我也尝试过:

new { _class = "myclass"}
Run Code Online (Sandbox Code Playgroud)

new { class_ = "myclass"}
Run Code Online (Sandbox Code Playgroud)

但它们也没有用,因为下划线被短划线取代.

我知道我也可以手工编写HTML元素或将表单包装在一个内部<div class="myClass">,但我仍然有兴趣知道它应该如何完成.

asp.net-mvc html-helper razor

187
推荐指数
1
解决办法
13万
查看次数

在HTML帮助器中生成URL

通常在ASP.NET视图中,可以使用以下函数来获取URL(而不是a <a>):

Url.Action("Action", "Controller");
Run Code Online (Sandbox Code Playgroud)

但是,我无法从自定义HTML帮助程序中找到如何执行此操作.我有

public class MyCustomHelper
{
   public static string ExtensionMethod(this HtmlHelper helper)
   {
   }
}
Run Code Online (Sandbox Code Playgroud)

辅助变量具有Action和GenerateLink方法,但它们生成了<a>.我在ASP.NET MVC源代码中做了一些挖掘,但我找不到一种简单的方法.

问题是上面的Url是视图类的成员,并且对于它的实例化,它需要一些上下文和路由映射(我不想处理它,我不应该这样做).或者,HtmlHelper类的实例也有一些上下文,我假设它是Url实例的上下文信息子集的晚餐(但我不想再处理它).

总而言之,我认为这是可能的,但是由于我可以看到的所有方式,涉及一些或多或少的内部ASP.NET内容的操作,我想知道是否有更好的方法.

编辑:例如,我看到的一种可能性是:

public class MyCustomHelper
{
    public static string ExtensionMethod(this HtmlHelper helper)
    {
        UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
        urlHelper.Action("Action", "Controller");
    }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎不对.我不想自己处理UrlHelper的实例.必须有一个更简单的方法.

url asp.net-mvc html-helper

167
推荐指数
3
解决办法
6万
查看次数

未找到Razor HtmlHelper Extensions(或其他视图命名空间)

Dunno如果在PR或Beta中发生这种情况,但如果我创建了一个扩展方法HtmlHelper,则在Razor驱动的页面中无法识别:

namespace SomeNamespace.Extensions {
    public static class HtmlExtensions {
        public static string Foo(this HtmlHelper html) {
            return "Foo";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我把它添加到以下<Namespaces>部分Web.config:

<pages>
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <!-- snip -->
    <add namespace="SomeNamespace.Extensions"/>
  </namespaces>
</pages>
Run Code Online (Sandbox Code Playgroud)

但是在尝试查看页面时会抛出编译错误:

@Html.Foo()
Run Code Online (Sandbox Code Playgroud)

如果我使用WebForms重新创建页面,它可以正常工作.这是怎么回事?

解决方法

如果我@using SomeNamespace.Extensions在我的Razor视图中包含它,那么它可以工作,但我更愿意将它包含在内Web.config

extension-methods html-helper razor asp.net-mvc-3

166
推荐指数
4
解决办法
12万
查看次数

<input type ="file"/>的Html帮助器

HTMLHelper文件上传吗?具体来说,我正在寻找替代

<input type="file"/>
Run Code Online (Sandbox Code Playgroud)

使用ASP.NET MVC HTMLHelper.

或者,如果我使用

using (Html.BeginForm()) 
Run Code Online (Sandbox Code Playgroud)

什么是文件上传的HTML控件?

asp.net-mvc upload html-helper file-upload razor

123
推荐指数
4
解决办法
15万
查看次数

你如何告诉Resharper方法参数是一个包含CSS类的字符串?

[为css类的HTMLHelper属性启用intellisense]

我有这个HTMLhelper:

public IHtmlString MyTextBoxFor<TModel, TProperty>(
    this HtmlHelper<TModel> html, 
    Expression<Func<TModel, TProperty>> propertyExpression, 
    string cssClass)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我希望Resharper在传递"cssClass"参数的值时为我的应用程序中定义的CSS类提供IntelliSense.

Resharper可以识别一些代码注释属性,但没有一个与将方法参数标记为CSS类直接相关.

我能找到的最接近的是[HtmlAttributeValue(字符串名称)].我试着像这样申请cssClass参数:

public IHtmlString MyTextBoxFor<TModel, TProperty>(
    this HtmlHelper<TModel> html, 
    Expression<Func<TModel, TProperty>> propertyExpression, 
    [HtmlAttributeValue("class")] string cssClass)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如果Resharper能够识别输入的类并且停止在jQuery选择器表达式中操作未知的CSS类(在上面的帮助器生成的文本框上操作),这也将是非常棒的.

编辑: 这是一个智能感知的屏幕截图,它适用于动作方法的"htmlAttributes"参数.这是通过在参数上使用[HtmlElementAttributes]注释来完成的.

Resharper htmlAttributes intellisense

我想要一个类似的注释,让我把css类放在一个字符串参数中,并让相同的intellisense出现在css类中.

c# asp.net-mvc resharper intellisense html-helper

118
推荐指数
1
解决办法
2482
查看次数

ASP.NET MVC中的RouteLink和ActionLink有什么区别?

我认为标题几乎总结了:

ASP.NET MVC RouteLink()ActionLink()ASP.NET MVC有什么区别?

即你何时使用Html.RouteLink(),何时Html.ActionLink()在你的视图中使用?

.net asp.net-mvc html-helper actionlink routelink

116
推荐指数
4
解决办法
4万
查看次数

如何在ASP.NET MVC3 Razor中创建只读文本框

如何使用Razor视图引擎在ASP.NET MVC3中创建只读文本框?是否有HTMLHelper方法可以做到这一点?

像这样的东西?

__CODE__

c# html-helper readonly-attribute razor asp.net-mvc-3

114
推荐指数
3
解决办法
22万
查看次数