小编hut*_*oid的帖子

在Razor-4视图中访问模型属性

我有以下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)

c# asp.net-mvc viewmodel razor asp.net-mvc-4

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

如何有选择地验证一些数据注释属性?

我的视图模型中有一些属性在保存时是可选的,但在提交时是必需的.总之,我们允许部分保存,但提交整个表单,我们确实希望确保所有必填字段都有值.

我现在能想到的唯一方法是:

操纵ModelState错误集合.

视图模型具有所有[Required]属性.如果请求是部分保存,则在进入控制器操作时ModelState.IsValid变为false.然后我运行所有ModelState(这是一个ICollection<KeyValuePair<string, ModelState>>)错误并删除[Required]属性引发的所有错误.

但是如果请求是提交整个表单,我不会干涉ModelState[Required]属性生效.

使用不同的视图模型进行部分保存和提交

这个更难看.一个视图模型将包含[Required]操作方法用于提交的所有属性.但是对于部分保存,我将表单数据发布到使用相同视图模型而没有所有[Required]属性的不同操作.

显然,我最终会遇到很多重复的代码/视图模型.

理想的解决方案

我一直在考虑是否可以[SubmitRequired]为这些必需的属性创建自定义数据注释属性.并且以某种方式使得验证在部分保存时忽略它,但在提交时则忽略.

仍然没有一个明确的线索.有人可以帮忙吗?谢谢.

c# asp.net asp.net-mvc model-binding data-annotations

5
推荐指数
1
解决办法
4260
查看次数

Asp.net MVC EditorFor"类型'System.Object'是在未引用的程序集中定义的"错误

@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)

我在另一个没有出现此错误的项目中使用了这种类似的方法.

c# asp.net asp.net-mvc razor asp.net-mvc-4

5
推荐指数
1
解决办法
5060
查看次数

Controller操作中的多个角色

我尝试在mvc4中创建自定义角色提供程序,以便在我的站点中授予用户访问权限.当我尝试使用角色提供者是成功的.

我成功创建了像这样的角色提供者

[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)

我的问题是,我可以在控制器中使用多个角色名称吗?我的意思是.

[Authorize(Roles = "admin")]
[Authorize(Roles = "admin")]
Run Code Online (Sandbox Code Playgroud)

尝试使用此代码,但不适合我.任何人都可以告诉我它是如何工作的?谢谢

c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

4
推荐指数
1
解决办法
3289
查看次数

在Razor中显示HTML 5电话号码链接

我有以下问题:

我希望在我的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如果号码不是固定号码怎么办?

如果不清楚,请发表评论,我将添加缺失的信息.

c# asp.net asp.net-mvc html5 razor

4
推荐指数
1
解决办法
2472
查看次数

可以在asp.net mvc4中使用jquery在@html.label中设置值吗?

我有一个 @Html.Label("", new { id="txtStatus1" })

其中txtstatus1值是使用jquery获得的 $('#txtStatus1').val(TicketStatus);

但我无法将此值设置为标签.

asp.net asp.net-mvc jquery html5 asp.net-mvc-4

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

MVC5商店和经理类

我知道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)

现在我的问题:

  1. Manager类的用途是什么?
  2. Store类的目的是什么?
  3. 为什么UserManager传递给MVC的Controller?
  4. 什么模式属于Manager和Store类?

c# asp.net asp.net-mvc design-patterns asp.net-mvc-5

4
推荐指数
1
解决办法
1162
查看次数

防止没有协议的URL成为相对URL

我有一些模型,我想在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"前缀)?

c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

4
推荐指数
1
解决办法
1451
查看次数

MVC ListBox多选在post上的控制器中只有一个值

我一直在关注列表框的一些指导并尝试正确处理选择.什么是困扰我,我似乎无法找到相关的材料是访问所选的值.可能只有一个被选中,但最有可能一次选择多个.

我的帖子控制器正在获取对象模型,它具有所选项目之一的值但不是全部的值?我是否需要在帖子之前运行一些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

c# asp.net asp.net-mvc razor asp.net-mvc-3

4
推荐指数
1
解决办法
7408
查看次数

MVC 5 - 添加客户端验证以拒绝默认值?

我正在使用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

3
推荐指数
1
解决办法
1118
查看次数