相关疑难解决方法(0)

未找到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万
查看次数

强类型RadioButtonlist

我想获得一些选项(比如付款方式现金,信用卡等)并将这些选项绑定到单选按钮.我相信MVC 3中没有RadioButtonList.

此外,一旦绑定了无线电,我想在编辑答案时向用户显示先前选择的选项.

radiobuttonlist razor asp.net-mvc-3

19
推荐指数
2
解决办法
2万
查看次数

为什么我找不到RadioButtonFor方法?

这是我的静态类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using System.Linq.Expressions;
using System.Text;
using System.Web;

namespace Foo.WebUI.Infrastructure
{
    public static class HtmlHelpers
    {
        public static MvcHtmlString Image(this HtmlHelper helper, string src, string altText)
        {
            var builder = new TagBuilder("img");
            builder.MergeAttribute("src", src);
            builder.MergeAttribute("alt", altText);

            return MvcHtmlString.Create(builder.ToString(TagRenderMode.SelfClosing));
        }

        public static MvcHtmlString RadioButtonForEnum<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
        {
            var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            var names = Enum.GetNames(metaData.ModelType);
            var sb = new StringBuilder();
            foreach (var name in names)
            {
                var id = …
Run Code Online (Sandbox Code Playgroud)

c# using asp.net-mvc-3

7
推荐指数
1
解决办法
2390
查看次数

将@ Html.RadioButtonFor设置为默认选中

我无法将默认单选按钮设置为"已选中"!我正在使用@ Html.RadioButtonFor:

<div id="private-user">
    @Html.RadioButtonFor(m => m.UserType, "type1", new { @class="type-radio" , **@Checked="checked"** }) 1
</div>
<div id="proff-user">
    @Html.RadioButtonFor(m => m.UserType, "type2", new { @class="type-radio" }) 2
</div>
Run Code Online (Sandbox Code Playgroud)

是否可以使用@ Html.RadioButtonFor设置单选按钮?

谢谢

asp.net-mvc radiobuttonfor razor asp.net-mvc-3

5
推荐指数
2
解决办法
2万
查看次数

Radio Button Enum Helper用于带有资源文件的模型

问题:

需要绑定具有Gender as enum属性的强类型模型.另外,我想显示资源文件中的显示文本.

我的模型是

public enum GenderViewModel
{
  [Display(Name = "Male", ResourceType = typeof(Resources.Global), Order = 0)]
  Male,
  [Display(Name = "Female", ResourceType = typeof(Resources.Global), Order = 1)]
  Female

}
Run Code Online (Sandbox Code Playgroud)

最初,我尝试了http://romikoderbynew.com/2012/02/23/asp-net-mvc-rendering-enum-dropdownlists-radio-buttons-and-listboxes/

但它有点复杂,我无法纠正我的HTML,但我想要.

然后我从stackoverflow看一下简单易用的实现,将枚举传递给html.radiobutton for MVC3

并在cshtml中使用了HtmlHelper,如下所示

@Html.RadioButtonForEnum(m => m.Gender)
Run Code Online (Sandbox Code Playgroud)

HTML生成

<label for="_Gender_Male">
 <input type="radio" value="Male" name="Gender" id="_Gender_Male" 
 data-val-required="Gender is required" data-val="true" checked="checked">
 <span class="radiotext">Male</span>
</label>

<label for="_Gender_Female">
<input type="radio" value="Female" name="Gender" id="_Gender_Female">
<span class="radiotext">Female</span></label>
Run Code Online (Sandbox Code Playgroud)

它非常简单,对我来说效果很好.但我没有从资源文件中获取值.我的应用程序是多语言的,我使用全局资源文件来提供不同的语言支持.

问题:

男性显示应该是男性女性显示应该是Kvinna应该来自资源文件,因为我目前的文化是sv-se

任何人都可以帮助/提供一个可以很好地控制HTML的简单解决方案吗?

asp.net-mvc razor asp.net-mvc-3

2
推荐指数
1
解决办法
2140
查看次数