我有以下EF生成的数据模型:
public partial class PrinterMapping
{
public string MTPrinterID { get; set; }
public string NTPrinterID { get; set; }
public string Active { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我有以下视图模型:
public class PrinterViewModel
{
public PrinterMapping PrinterMapping;
public Exceptions Exceptions;
public IEnumerable<PrinterMapping> Printers;
}
Run Code Online (Sandbox Code Playgroud)
在HomeController中的Index Action中,我将视图模型传递给Index视图.
private eFormsEntities db = new eFormsEntities();
public ActionResult Index()
{
PrinterViewModel printerModel = new PrinterViewModel();
printerModel.Printers = from pt in db.PrinterMapping select pt;
return View(printerModel);
}
Run Code Online (Sandbox Code Playgroud)
我的索引视图以下面的方式调用部分视图(可能是错误的):
@Html.Partial("~/Views/Home/GridView.cshtml")
Run Code Online (Sandbox Code Playgroud)
我的GridView.cshtml看起来像:
@model AccessPrinterMapping.Models.PrinterViewModel
<h2> This is Where …Run Code Online (Sandbox Code Playgroud) 我的视图模型中有一些属性在保存时是可选的,但在提交时是必需的.总之,我们允许部分保存,但提交整个表单,我们确实希望确保所有必填字段都有值.
我现在能想到的唯一方法是:
视图模型具有所有[Required]属性.如果请求是部分保存,则在进入控制器操作时ModelState.IsValid变为false.然后我运行所有ModelState(这是一个ICollection<KeyValuePair<string, ModelState>>)错误并删除[Required]属性引发的所有错误.
但是如果请求是提交整个表单,我不会干涉ModelState和[Required]属性生效.
这个更难看.一个视图模型将包含[Required]操作方法用于提交的所有属性.但是对于部分保存,我将表单数据发布到使用相同视图模型而没有所有[Required]属性的不同操作.
显然,我最终会遇到很多重复的代码/视图模型.
我一直在考虑是否可以[SubmitRequired]为这些必需的属性创建自定义数据注释属性.并且以某种方式使得验证在部分保存时忽略它,但在提交时则忽略.
仍然没有一个明确的线索.有人可以帮忙吗?谢谢.
@using (Html.BeginForm("Index", "Employees", FormMethod.Post, new { encType = "multipart/form-data", name = "EmployeeForm" }))
{
<table class="table table-bordered table-condensed table-striped">
<tr>
<th>
Name
</th>
<th>
Surname
</th>
<th>
ID Number
</th>
<th>
Email
</th>
<th>
Birthdate
</th>
<th>
Action
</th>
</tr>
@Html.EditorFor(model => model.Employees)
</table>
}
Run Code Online (Sandbox Code Playgroud)
第32行:@ Html.EditorFor(model => model.Employees)给出以下错误
CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
Run Code Online (Sandbox Code Playgroud)
我在另一个没有出现此错误的项目中使用了这种类似的方法.
我尝试在mvc4中创建自定义角色提供程序,以便在我的站点中授予用户访问权限.当我尝试使用角色提供者是成功的.
我成功创建了像这样的角色提供者
[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以在控制器中使用多个角色名称吗?我的意思是.
[Authorize(Roles = "admin")]
[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)
尝试使用此代码,但不适合我.任何人都可以告诉我它是如何工作的?谢谢
我有以下问题:
我希望在我的HTML5网页上有一个可点击的电话号码.通常我会简单地使用
<a href="tel: +123456789"> 123456789 </a>
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我从数据库中获取数字并访问数字石灰.
到目前为止,代码行看起来像这样:
<a href=""> @Html.DisplayFor(modelItem => item.AD_Tel)</a>
Run Code Online (Sandbox Code Playgroud)
那么href如果号码不是固定号码怎么办?
如果不清楚,请发表评论,我将添加缺失的信息.
我有一个 @Html.Label("", new { id="txtStatus1" })
其中txtstatus1值是使用jquery获得的
$('#txtStatus1').val(TicketStatus);
但我无法将此值设置为标签.
我知道MVC模式代表模型视图控制器.但Store和Manager类文件来自哪里?
我用MongoDB启动了我的项目,并实现了MongoDB.AspNet.Identity.这是带有EF的Microsoft.AspNet.Indentity的扩展.
但是当查看此包提供的AccountController时,他们使用以下代码.
public AccountController()
: this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>("DefaultConnection")))
{
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题:
我有一些模型,我想在RazorView中渲染html-markup,如下所示:
<a href="@Model.Website">@Model.Title</a>
Run Code Online (Sandbox Code Playgroud)
用户可以写在任何URL Website属性(google.com,www.google.com,http://www.google.com等).
问题是如果用户不写协议前缀,http那么生成的HTML将被浏览器视为站点相对URL:
<a href="http://localhost:xxxx/google.com">Google</a>
Run Code Online (Sandbox Code Playgroud)
有没有简单的解决方案,还是我必须在渲染html之前准备网站字符串(添加"http"前缀)?
我一直在关注列表框的一些指导并尝试正确处理选择.什么是困扰我,我似乎无法找到相关的材料是访问所选的值.可能只有一个被选中,但最有可能一次选择多个.
我的帖子控制器正在获取对象模型,它具有所选项目之一的值但不是全部的值?我是否需要在帖子之前运行一些jquery,正如其他文章所说的那样?似乎不对,但也许......
我的模特:
public partial class ExtrnlSubsModel : BaseEntityModel
{
public IList<SelectListItem> AvailableForums { get; set; }
public int ExtForumId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的剃刀:
@Html.ListBoxFor(model => model.ExtForumId, Model.AvailableForums, new { style = "width:500px;height:250px" })
@Html.RequiredHint()
@Html.ValidationMessageFor(model => model.ExtForumId)
Run Code Online (Sandbox Code Playgroud)
我的控制器:
[HttpPost]
public ActionResult ExtForumAdd(ExtrnlSubsModel model)
{ .... }
Run Code Online (Sandbox Code Playgroud)
因此,正如我所提到的,我的模型已经填充,但只有一个选择,尽管有ctrl点击了很多项目.
TIA
我正在使用a DropDownListFor并提供默认选择,-- Select Make --其中包含空值.我想向用户提供一些操作提示(因此"选择Make")但不想让他们实际提交该值.目前该网站允许这样做.
我认为添加最小长度为2会阻止它,但没有运气.
我是.NET MVC的新手,所以如果我以完全错误的方式做这件事,请告诉我.
实际的POST请求正文是:
Make=&OtherArgument=1&NextArgument=test
Run Code Online (Sandbox Code Playgroud)
查看代码:
@Html.LabelFor(m => m.Make)
@Html.DropDownListFor(m => m.Make, Model.Make, "-- Select Make --")
@Html.ValidationMessageFor(m => m.Make)
Run Code Online (Sandbox Code Playgroud)
型号代码:
[Required(ErrorMessage = "*", AllowEmptyStrings = false)]
[StringLength(50, MinimumLength = 2, ErrorMessage = "*")]
public IEnumerable<SelectListItem> Make = new List<SelectListItem>
{
new SelectListItem
{
Text = "Deere",
Value = "Deere"
},
new SelectListItem
{
Text = "Case",
Value = "Case"
},
new SelectListItem
{
Text = "CAT",
Value = "CAT"
}
};
Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc jquery client-side-validation asp.net-mvc-5