你如何告诉Resharper一个方法参数是一个包含CSS类的string?
[为CSS类的HTMLHelper属性启用智能感知]
我有这个HTMLhelper:
public IHtmlString MyTextBoxFor<TModel, TProperty>( this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, string cssClass) { // ... }
我希望Resharper在为“cssClass”parameter passing值时为我提供在我的应用程序中定义的IntelliSense for CSS类。
有一些代码注释属性Resharper识别,但似乎没有直接关系到将方法参数标记为CSS类。
我能find的最接近的是[HtmlAttributeValue(string name)] 。 我试图应用到这样的cssClass参数:
public IHtmlString MyTextBoxFor<TModel, TProperty>( this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, [HtmlAttributeValue("class")] string cssClass) { // ... }
但是这不起作用。 如果Resharper能识别input的类,并停止在jQueryselect器expression式(对上面的帮助器生成的文本框进行操作)中关于未知的CSS类的问题,那也是非常棒的。
编辑:这里是一个工作方式的“htmlAttributes”参数的智能感知types的屏幕截图。 这是通过在参数上使用[HtmlElementAttributes]注释来完成的。
我想要一个类似的注释,让我把CSS类放在一个string参数,并有相同的智能感知显示CSS类。
使用[ValueProvider]
从Resharper 10当前支持的代码注释中 ,最好的候选者将使用这个属性。 从上面的链接:
ValueProviderAttribute
对于预期为有限的一组值的参数。 指定应将哪个types的字段用作此参数的值。
不幸的是,我还没有弄清楚它是如何工作的。 也许这是我的Resharper版本9.2中的越野车。
我到目前为止所尝试的是:
namespace ValueProviderSample { public static class MyValuesContainer { public static readonly string[] Values = { "one", "two", "three" }; } public class MyMethodContainer { public string MyMethod([ValueProvider("ValueProviderSample.MyValuesContainer.Values")] string parameter) { return string.Empty; } } }
即使你使它工作,你仍然必须填写值列表。
当然,您仍然可以为Resharper开发代码注释/扩展。
为什么不使用强types对象而不是string?
有时候不用string
和int
,我们可以使用我们自己devise的更强types的类。 由于看起来你可以控制你的代码,所以你可以不使用带有css名字的string
,而是创build一个像CssClass
这样的新types。
你只需要添加一个预编译的事件调用一个生成器来parsing项目中的每一个CSS,并dynamic地创build一个类:
public class CssClass { public string Name { get; private set; } public static CssClass In = new CssClass("in"); /// <summary> /// Initialise une nouvelle instance de la classe <see cref="T:System.Object"/>. /// </summary> private CssClass(string name) { Name = name; } }
然后您的示例将如下所示:
public class MySample { public IHtmlString MyTextBoxFor<TModel, TProperty>( this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> propertyExpression, CssClass cssClass) { // ... } public void Usage() { MyTextBoxFor(html, expression, CssClass.In); } }
- 如何显示从asp.net MVC 4和Razor视图中的path的图像?
- ASP.Net MVC Html.HiddenFor具有错误的值
- 扩展AuthorizeAttribute覆盖AuthorizeCore或OnAuthorization
- 尝试浏览* .cshtml文件时出现“这种types的页面没有送达”错误
- 在cookie中存储密码是否安全?
- 我是否需要一个Global.asax.cs文件,如果我正在使用一个OWIN Startup.cs类并移动所有的configuration?
- ASP.NET视图中的区域?
- 当从VS2010发布时,allowDefinition ='MachineToApplication'错误(但只在之前的版本之后)
- 从数据注释的Asp.Net Mvc隐藏字段