标签: html-helper

将ViewModel模式与MVC 2强类型HTML帮助程序一起使用

我正在使用ASP.NET MVC2 RC,无法弄清楚如何获取HTML帮助程序,TextBoxfor使用ViewModel模式.在编辑页面上使用时,在控制器中调用UpdateModel()时,不会保存数据.我从NerdDinner应用程序中获取了以下代码示例.

Edit.aspx

<%@ Language="C#" Inherits="System.Web.Mvc.ViewUserControl<NerdDinner.Models.DinnerFormViewModel>" %>
...
<p>
    // This works when saving in controller (MVC 1)
    <label for="Title">Dinner Title:</label>
    <%= Html.TextBox("Title", Model.Dinner.Title) %>
    <%= Html.ValidationMessage("Title", "*") %>
</p>
<p>
    // This does not work when saving in the controller (MVC 2)
    <label for="Title">Dinner Title:</label>
    <%= Html.TextBoxFor(model => model.Dinner.Title) %>
    <%= Html.ValidationMessageFor(model=> model.Dinner.Title) %>
</p>
Run Code Online (Sandbox Code Playgroud)

DinnerController

// POST: /Dinners/Edit/5

[HttpPost, Authorize]
public ActionResult Edit(int id, FormCollection collection) {

    Dinner dinner = dinnerRepository.GetDinner(id);

    if (!dinner.IsHostedBy(User.Identity.Name)) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper

18
推荐指数
1
解决办法
5998
查看次数

ASP.NET MVC:为什么`ToMvcHtmlString`不公开?

我正在尝试编写自己的小HTML帮助程序,它的行为非常类似DropDownListFor但不会遇到我之前遇到过的相同问题.我们不讨论是否DropDownListFor有缺陷 - 这不是这个问题的意义所在.

无论如何,MVC人员ToMvcHtmlString内部而非公开的原因是什么?

c# asp.net-mvc extension-methods html-helper

18
推荐指数
3
解决办法
2704
查看次数

ASP.NET MVC 3 HtmlHelper异常无法识别继承接口上的ModelMetadata

升级到MVC 3 RTM后,我得到了一个以前工作的例外.

这是场景.我有几个使用相同底层接口IActivity和IOwned的对象.

IActivity implements IOwned (another interface)

public interface IActivity:IOwned {...}

public interface IOwned 
{
    int? AuthorId {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我有一个局部视图,它使用IActivity从其他具体的部分重用.

以下是Activity Partial的定义.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IActivity>" %>
<%: Html.HiddenFor(item => item.AuthorId) %>
Run Code Online (Sandbox Code Playgroud)

但是,它会引发异常.它在ModelMetadata中找不到AuthorId.

我猜测在之前的版本中它查看了IActivity实现的接口.

任何想法,建议,到处都没有重复类似的接口?

复制下面的堆栈跟踪.

[ArgumentException: The property IActivity.AuthorId could not be found.]
   System.Web.Mvc.AssociatedMetadataProvider.GetMetadataForProperty(Func`1 modelAccessor, Type containerType, String propertyName) +498313
   System.Web.Mvc.ModelMetadata.GetMetadataFromProvider(Func`1 modelAccessor, Type modelType, String propertyName, Type containerType) +101
   System.Web.Mvc.ModelMetadata.FromLambdaExpression(Expression`1 expression, ViewDataDictionary`1 viewData) +393
   System.Web.Mvc.Html.InputExtensions.HiddenFor(HtmlHelper`1 htmlHelper, Expression`1 expression, IDictionary`2 htmlAttributes) +57
   System.Web.Mvc.Html.InputExtensions.HiddenFor(HtmlHelper`1 htmlHelper, Expression`1 expression) +51
   ASP.views_shared_activity_ascx.__Render__control1(HtmlTextWriter …
Run Code Online (Sandbox Code Playgroud)

asp.net html-helper modelmetadata asp.net-mvc-3

18
推荐指数
5
解决办法
4913
查看次数

"this"关键字在方法参数中的含义是什么?

namespace System.Web.Mvc.Html
{
    // Summary:
    //     Represents support for HTML in an application.
    public static class FormExtensions
    {
        public static MvcForm BeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName);
...
    }
}
Run Code Online (Sandbox Code Playgroud)

我注意到,BeginForm方法中第一个参数前面的'this'对象似乎不被接受为参数.看起来在真正的BeginForm方法中的功能如下:

BeginForm(string actionName, string controllerName);
Run Code Online (Sandbox Code Playgroud)

省略第一个参数.但它实际上以隐藏的方式以某种方式接收第一个参数.能告诉我这个结构是如何工作的吗?我实际上正在探索MVC 4互联网示例.谢谢.

c# extension-methods html-helper

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

ASP.NET MVC - Html.DropDownList - 未通过ViewData.Model设置的值

刚刚开始玩ASP.NET MVC并且偶然发现了以下情况.感觉很像一个bug,但如果不是,一个解释将不胜感激:)

视图包含非常基本的东西

<%=Html.DropDownList("MyList", ViewData["MyListItems"] as SelectList)%>
<%=Html.TextBox("MyTextBox")%>
Run Code Online (Sandbox Code Playgroud)

不使用模型时,值和所选项目按预期设置:

//works fine
public ActionResult MyAction(){
  ViewData["MyListItems"] = new SelectList(items, "Value", "Text"); //items is an ienumerable of {Value="XXX", Text="YYY"}

  ViewData["MyList"] = "XXX"; //set the selected item to be the one with value 'XXX'
  ViewData["MyTextBox"] = "ABC"; //sets textbox value to 'ABC'

  return View();
}
Run Code Online (Sandbox Code Playgroud)

但是当尝试通过模型加载时,文本框的值设置为预期,但下拉列表不会获得选定的项目集.

//doesnt work
public ActionResult MyAction(){
  ViewData["MyListItems"] = new SelectList(items, "Value", "Text"); //items is an ienumerable of {Value="XXX", Text="YYY"}

  var model = new {
    MyList = "XXX", //set …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper

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

MVC:覆盖默认的ValidationMessage

在MVC的世界里,我有这个视图模型......

public class MyViewModel{

[Required]
public string FirstName{ get; set; }    }
Run Code Online (Sandbox Code Playgroud)

......在我看来......这种事情......

<%= Html.ValidationSummary("Please correct the errors and try again.") %>
<%= Html.TextBox("FirstName") %>
<%= Html.ValidationMessage("FirstName", "*") %>
Run Code Online (Sandbox Code Playgroud)

我的问题:如果我提交此表单而不提供名称,我会收到以下消息"FirstName字段是必需的"

好.所以,我去改变我的财产......

[DisplayName("First Name")]
[Required]
public string FirstName{ get; set; }    
Run Code Online (Sandbox Code Playgroud)

..现在得到"名字字段是必需的"

到目前为止都很好.

所以现在我想要错误信息显示"名字Blah Blah".如何覆盖默认消息以显示DisplayName +"Blah Blah",而不是用类似的东西注释所有属性

[Required(ErrorMessage = "First Name Blah Blah")]
Run Code Online (Sandbox Code Playgroud)

干杯,

ETFairfax

asp.net-mvc html-helper data-annotations

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

当使用ASP.Net MVC的Html.TextBoxFor时,如何在强大的类型视图中格式化值

我试图使用强类型视图的值格式化ASP.Net MVC的TextBoxFor呈现的日期.日期可以为空,所以如果它为null我想看到一个空白值,否则我希望以MM/dd/yyyy格式看到它.

<%= Html.TextBoxFor(model => model.BirthDate, new { style = "width: 75px;" })%>
Run Code Online (Sandbox Code Playgroud)

谢谢,
Paul Speranza

format asp.net-mvc html-helper

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

Html.EditorFor <>等同于查看只读数据?

我目前正在使用Html.EditorFor <>方法生成编辑器字段,但我想使用类似的东西以只读格式显示字段信息,例如详细信息页面,即带有字段名称后跟一个标签的标签带有字段值的标签.

目前在MVC中是否有任何等效的产生?或者我将不得不创建一个自定义助手?

提前致谢.

编辑:我知道DisplayFor和LabelFor,它只是手动必须组合这些?

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

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

如何在ASP.NET MVC中定义表单字段前缀

我试图ProductCatalog在ASP.NET MVC中呈现复合视图.这要求我Product每页渲染多个视图.每个产品视图都是一个单独的表单.我需要表单字段具有基于id的前缀,以便我在呈现的文档中没有重复的ID.有没有办法定义要应用于Html扩展生成的所有表单字段的前缀,还是需要手动构建它?

asp.net-mvc html-helper prefix asp.net-mvc-3 asp.net-mvc-2

17
推荐指数
1
解决办法
3975
查看次数

使用@ Html.EditorForModel的限制

我正在开发一个asp.net mvc-5 Web应用程序.我有以下模特课: -

public class Details4
    {
        [HiddenInput(DisplayValue=false)]
        public string RESOURCENAME { set; get; }
        [Display (Name="Account Name")]
        [Required]
        public string ACCOUNTNAME { set; get; }
        [Display(Name = "Resource type")]
        [Required]
        public string RESOURCETYPE { set; get; }
        [DataType(DataType.Password)]
        [Required]
        public string PASSWORD { set; get; }
        [Display(Name = "Description")]
        [DataType(DataType.MultilineText)]
        public string Description { set; get; }
        [Display(Name= "URL")]
        [Url]
        public string RESOURCEURL { set; get; }
        [Display(Name="Owner Name")]
        [Required]
        public string OWNERNAME { set; get; }
        [Display(Name …
Run Code Online (Sandbox Code Playgroud)

css asp.net html-helper razor asp.net-mvc-5

16
推荐指数
1
解决办法
819
查看次数