在razor视图中服务器端注释的语法是什么?
我想评论这段代码:
/*
@helper NavItem() {
}
*/
Run Code Online (Sandbox Code Playgroud) 我有一个MVC控制器,具有此操作方法:
[HttpPost]
public ActionResult SubmitAction()
{
// Get Post Params Here
... return something ...
}
Run Code Online (Sandbox Code Playgroud)
表单是一个非常简单的表单,带有一个简单的文本框.
题
我如何访问参数值?
我不是从View发帖,帖子是外部的.我假设有一组我可以访问的键/值对.
我试过Request.Params.Get("simpleTextBox");但它返回错误"抱歉,处理您的请求时出错".
我DropDownListFor在我的MVC3应用程序中遇到了麻烦.我能够使用StackOverflow来弄清楚如何让它们出现在View上,但现在我不知道在提交时如何捕获视图模型中相应属性中的值.为了使其工作,我必须创建一个具有ID和value属性的内部类,然后我必须使用a IEnumerable<Contrib>来满足DropDownListFor参数要求.但是,现在,MVC FW应该如何将在此下拉列表中选择的值映射回我的视图模型上的简单字符串属性?
public class MyViewModelClass
{
public class Contrib
{
public int ContribId { get; set; }
public string Value { get; set; }
}
public IEnumerable<Contrib> ContribTypeOptions =
new List<Contrib>
{
new Contrib {ContribId = 0, Value = "Payroll Deduction"},
new Contrib {ContribId = 1, Value = "Bill Me"}
};
[DisplayName("Contribution Type")]
public string ContribType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的视图中,我将下拉列表放在页面上,如下所示:
<div class="editor-label">
@Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId,
new …Run Code Online (Sandbox Code Playgroud) 我想在MVC中使用DropDownListFor
@foreach (var item in Model)
{
@Html.DropDownListFor(modelItem => item.TitleIds, new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable, "TitleId", "Title.TitleText"), "No: " + ViewBag.MagNo, new { id = "TitleIds" })
}
Run Code Online (Sandbox Code Playgroud)
在控制器中
public ActionResult ArticleList(int id)
{
ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel();
Func<IQueryable<NumberTitle>, IOrderedQueryable<NumberTitle>> orderByFunc = null;
Expression<Func<NumberTitle, bool>> filterExpr = null;
if (id > 0)
{
filterExpr = p => p.MagazineId.Equals(id);
}
var wholeTitles = unitOfWork.NumberTitleRepository.Get(filterExpr, orderByFunc, "Magazine,Title").ToList();
ViewBag.MagNo = wholeTitles[0].Magazine.MagNo.ToString();
ViewBag.MagId = wholeTitles[0].Magazine.Id;
ViewBag.TitleNames = wholeTitles;
return View("../Panel/Magazine/ArticleList", "_BasicLayout", viewModel);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误 …
HtmlString 与 MvcHtmlString
两者之间有什么区别,或者何时优先选择另一个?
编辑:
有一点喜欢MvcHtmlString过HtmlString的是扩展方法IsNullOrEmpty的MvcHtmlString.
我有一个具有4个属性的模型,其类型为字符串.我知道您可以使用StringLength注释验证单个属性的长度.但是,我想验证4个属性组合的长度.
使用数据注释执行此操作的MVC方式是什么?
我问这个是因为我是MVC的新手,并希望在制作我自己的解决方案之前以正确的方式做到这一点.
使用MVC 3和Razor视图引擎.我有这个观点:
@model dynamic
@{
var products = (List<ListItemBaseModel>)Model.Products;
var threshold = (int)(Model.Threshold ?? 1);
var id = Guid.NewGuid().ToString();
}
Run Code Online (Sandbox Code Playgroud)
使用此代码从另一个视图调用它:
@Html.Partial("PartialViewName", new { Products = Model, Threshold = 5 })
Run Code Online (Sandbox Code Playgroud)
在两个视图中,当我调试它们并观看模型时,它似乎包含正确的对象.当我执行代码时,我在"var products ="行上收到错误说:
'object'不包含'Products'的定义
任何人都可以向我解释为什么我会收到这个错误?再次,当我在调试模式下观察Model对象时,它看起来很好(具有2个属性:Products和Threshold)
我想将所有JavaScript代码保存在一个部分中; 就body在我的主布局页面中的结束标记之前,只是想知道最好的去做,MVC风格.
例如,如果我创建一个DisplayTemplate\DateTime.cshtml使用jQuery UI的DateTime Picker 的文件,而不是将JavaScript直接嵌入到该模板中,那么它将在页面中间呈现.
在我的普通视图中,我可以使用@section JavaScript { //js here }然后@RenderSection("JavaScript", false)在我的主布局中,但这似乎不适用于显示/编辑器模板 - 任何想法?
在我的MVC3项目中,我存储了足球/足球/曲棍球/ ...运动游戏的得分预测.所以我的预测类的一个属性看起来像这样:
[Range(0, 15, ErrorMessage = "Can only be between 0 .. 15")]
[StringLength(2, ErrorMessage = "Max 2 digits")]
[Remote("PredictionOK", "Predict", ErrorMessage = "Prediction can only be a number in range 0 .. 15")]
public int? HomeTeamPrediction { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在,int在我的情况下,我还需要更改数据类型的错误消息.使用了一些默认值 - "HomeTeamPrediction字段必须是数字.".需要找到一种方法来更改此错误消息.此验证消息似乎也对远程验证进行了预测.
我已尝试过[DataType]属性但这在system.componentmodel.dataannotations.datatype枚举中似乎不是普通数字.
我创建了一个名为_Test.cshtml的测试部分页面,并将其放在与我将调用它的视图相同的目录中,这里是:
<div>hi</div>
Run Code Online (Sandbox Code Playgroud)
在调用cshtml视图中,我只是简单地说:
@Html.RenderPartial("_Test")
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
CS1502:'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配有一些无效的参数
我也尝试了相同结果的完整路径.
我很困惑为什么这样做是这样的,我想我错过了一些简单的东西?
asp.net-mvc-3 ×10
asp.net-mvc ×5
razor ×4
c# ×3
.net ×1
.net-4.0 ×1
asp.net ×1
comments ×1
html ×1
http-post ×1