我的模型中有一个DateTime字段.如果我尝试以这种方式在强类型局部视图中使用此字段
<%= Html.TextBoxFor(model => model.DataUdienza.ToString("dd/MM/yyyy"), new { style = "width: 120px" }) %>
Run Code Online (Sandbox Code Playgroud)
我将在运行时收到以下编译错误
System.InvalidOperationException : Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
Run Code Online (Sandbox Code Playgroud)
无论如何,如果我使用它删除格式,ToString("dd/MM/yyyy"),一切正常,但字段使用我根本不需要的时间部分格式化.
我在哪里做错了?处理这个问题的正确方法是什么?
谢谢你的帮助!
编辑
这是模型类中的属性声明
[Required]
[DisplayName("Data Udienza")]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DataUdienza { get; set; }
Run Code Online (Sandbox Code Playgroud) 我最近将我的项目更新为mvc 5,EF 6.我通过包控制台管理器(update-package)更新了所有软件包.
现在我在每个视图/局部视图/布局中看到大量关于html助手的警告.
这些是一些错误:
这是views/webconfig:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<httpHandlers> …Run Code Online (Sandbox Code Playgroud) 可以将HTML title属性添加到输入标记,如下所示:
@Html.TextBoxFor(model => model.Name, new { title = "Customer name" })
Run Code Online (Sandbox Code Playgroud)
静态文本是否有类似的帮助?随着@Html.DisplayFor(model => model.Name)我可以呈现从模型属性的文本.如何添加HTML属性以便我获得如下span呈现的标记:
<span title="Customer name">ABC</span>
Run Code Online (Sandbox Code Playgroud) 我正在使用MVC3并且有一个简单的帮助器,它为一个状态应用程序绘制了一个带有一些文本和图标的盒子.一个片段:
@helper Tile(string ID)
{
<div class="front defaulttile">
<div class="notifybar" id="NotifyBarID" >
<img alt="" src="@Url.Content("~/Images/img.jpg")" style="display: inline; margin-right: 5px;" />
<p class="topstatusbartext" id="NotifyBarTextID" >Status bar text</p>
</div>
etc...
Run Code Online (Sandbox Code Playgroud)
将@ Url.Content用于图像src会很棒,但是我得到一个错误,它不可用.有什么我可以添加或更改使用它吗?一旦应用程序在服务器上,我宁愿不需要处理路径并遇到问题.
谢谢!
我很好奇什么时候建议使用HtmlHelper扩展方法以及何时使用局部视图?在许多情况下,他们似乎同样有资格.
正如问题标题所解释的那样,在DateTime通过Html.TextboxFor方法显示属性值时,指定我的视图使用的格式的最佳方法是什么.
默认显示包括我真正只想显示日期的日期和时间.
谢谢
我有以下代码片段我想用@ url.action传递data-id ="0",我该怎么做
<a class="v-patient pointer" data-id="0" href="@Url.Action("View1", "Task")">View Patient</a></td>
Run Code Online (Sandbox Code Playgroud)
我的任务控制器
public ActionResult View1(string id)
{
return View();
}
Run Code Online (Sandbox Code Playgroud) 升级到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) 可能重复:
属性的客户端ID(ASP.Net MVC)
有没有办法让Razor在使用Html.LabelFor <>帮助器时为Label元素呈现ID属性?
例:
.cshtml page
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.Foo)
@Html.TextBoxFor(m => m.Foo)
}
Run Code Online (Sandbox Code Playgroud)
呈现页面
<form ...>
<label for="Foo" id="Label_Foo" />
<input type="text" name="Foo" id="Foo" />
</form>
Run Code Online (Sandbox Code Playgroud)
仅供参考 - 我想在标签上添加ID的唯一原因是CSS设计.我更喜欢用ID引用Label而不是将Label包装在一个块(即div)中,然后设置块的样式.
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互联网示例.谢谢.
html-helper ×10
asp.net-mvc ×6
razor ×3
asp.net ×2
c# ×1
controller ×1
formatting ×1
url ×1
web-config ×1