我对如何连接MvcHtmlString实例有一些疑问,因为在MSDN中找到了这些信息:
MvcHtmlString类表示不应再次编码的HTML编码字符串
使用这样的代码时,我冒险将字符串HTML编码两次:
var label = Html.LabelFor(model => model.Email);
var textbox = Html.TextBoxFor(model => model.Email);
var validation = Html.ValidationMessageFor(model => model.Email);
var result = MvcHtmlString.Create(
label.ToString() + textbox.ToString() + validation.ToString());
Run Code Online (Sandbox Code Playgroud)
(注意:这应该进入HtmlHelper扩展方法以减少视图中的代码重复).
无论如何在ViewModel上预先填充了具有数据属性的SelectList吗?
我想要做
@Html.DropdownListFor(m=> m.CityId, Model.Cities);
Run Code Online (Sandbox Code Playgroud)
所以它生成如下代码:
<select id="City" class="location_city_input" name="City">
<option data-geo-lat="-32.522779" data-geo-lng="-55.765835" data-geo-zoom="6" />
<option data-geo-lat="-34.883611" data-geo-lng="-56.181944" data-geo-zoom="13" data-geo-name="Montevideo" data-child=".state1" value="1">Montevideo</option>
<option data-geo-lat="-34.816667" data-geo-lng="-55.95" data-geo-zoom="13" data-geo-name="Canelones, Ciudad de la Costa" data-child=".state41" value="41">Ciudad de la Costa</option>
</select>
Run Code Online (Sandbox Code Playgroud) asp.net-mvc html5 html-helper selectlist custom-data-attribute
检索模型中项目的显示名称属性的最佳方法是什么?我看到很多人使用LabelFor帮助程序来处理所有事情,但如果我只想列出数据,那么标签就不合适了.有一个简单的方法只是获取名称属性,如果我只想打印出来,比如段落?
我可以在MSDN上找到Html.HiddenFor的一个很好的定义,但我在Html.Hidden上找到的唯一的东西与它有的问题有关.
有人可以给我一个很好的定义和一个例子.
我有一个ASP.Net MVC 4应用程序,我正在使用这样的Url.Action助手: @Url.Action("Information", "Admin")
此页面用于添加新的和编辑管理员配置文件.URL如下:
Adding a new: http://localhost:4935/Admin/Information
Editing Existing: http://localhost:4935/Admin/Information/5 <==Admin ID
Run Code Online (Sandbox Code Playgroud)
当我在Editing Existing
网站的部分,并决定我想添加一个新的管理员时,我点击以下链接:
<a href="@Url.Action("Information", "Admin")">Add an Admin</a>
Run Code Online (Sandbox Code Playgroud)
但问题是上面的链接实际上是这样的http://localhost:4935/Admin/Information/5
.只有在我编辑现有管理员的页面时才会发生这种情况.网站上的其他任何地方都能正确链接到http://localhost:4935/Admin/Information
有没有人见过这个?
更新:
RouteConfig:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud) 我有MVC3的问题
我正试图@Html.ActionLink()
在我的博客项目中为标题生成链接.
在ActionLink
作品中使用常量字符串只是花花公子,但如果我使用Posts.Title
(当前Post模型的标题被循环),我会得到以下异常:
CS1973: 'System.Web.Mvc.HtmlHelper<dynamic>' has no applicable method
named 'ActionLink' but appears to have an extension method by that name.
Extension methods cannot be dynamically dispatched. Consider casting
the dynamic arguments or calling the extension method without the
extension method syntax.
Run Code Online (Sandbox Code Playgroud) 我正在为HtmlHelper编写一个脏的小扩展方法,以便我可以说HtmlHelper.WysiwygFor(lambda)之类的内容并显示CKEditor.
我现在有这个工作,但它似乎比我想要的更麻烦.我希望有更直接的方式来做到这一点.
这是我到目前为止所拥有的.
public static MvcHtmlString WysiwygFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
return MvcHtmlString.Create(string.Concat("<textarea class=\"ckeditor\" cols=\"80\" id=\"",
expression.MemberName(), "\" name=\"editor1\" rows=\"10\">",
GetValue(helper, expression),
"</textarea>"));
}
private static string GetValue<TModel, TProperty>(HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
MemberExpression body = (MemberExpression)expression.Body;
string propertyName = body.Member.Name;
TModel model = helper.ViewData.Model;
string value = typeof(TModel).GetProperty(propertyName).GetValue(model, null).ToString();
return value;
}
private static string MemberName<T, V>(this Expression<Func<T, V>> expression)
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
throw new InvalidOperationException("Expression must …
Run Code Online (Sandbox Code Playgroud) Html.ActionLink()中的问题是您无法在其生成的标记内添加其他html内容.例如,如果要添加文本旁边的图标,例如:
<a href="/Admin/Users"><i class="fa fa-users"></i> Go to Users</a>
Run Code Online (Sandbox Code Playgroud)
使用Html.ActionLink(),您只能生成:
<a href="/Admin/Users">Go to Users</a>
Run Code Online (Sandbox Code Playgroud)
因此,要解决此问题,您可以使用Url.Action()仅生成标记内的URL,如:
// Here, Url.Action could not generate the URL "/admin/users". So this doesn't work.
<a href="@Url.Action("", "Users", "Admin")"><i class="fa fa-usesr"></i> Go to Users</a>
// This works, as we know it but won't pass the Area needed.
<a href="@Url.Action("", "Users")"><i class="fa fa-users"></i> Go to Users</a>
Run Code Online (Sandbox Code Playgroud)
那么,你如何使用Url.Action()传递区域?
非常感谢你提前!
我正在使用MVC区域,并且在一个名为"Test"的区域中的视图我希望有一个表单发布到以下方法:
area: Security
controller: AccountController
method: logon
Run Code Online (Sandbox Code Playgroud)
如何使用Html.BeginForm实现这一目标?可以吗?
我正在尝试编写一个简单的声明性html帮助器:
@helper Echo(string input) {
@input
}
Run Code Online (Sandbox Code Playgroud)
如果我将它嵌入我想要使用它的页面,帮助程序工作正常.但是如果我将它移动到一个单独的.cshtml
文件并将该文件放在~/Views/Helpers
目录中,我的视图就不能再编译了,因为找不到帮助器.根据Scott Gu 关于Razor的博客文章,它应该有效.
我究竟做错了什么?
html-helper ×10
asp.net-mvc ×9
c# ×3
asp.net ×1
html5 ×1
lambda ×1
razor ×1
recursion ×1
selectlist ×1
url.action ×1