标签: asp.net-mvc-5

使用元数据类覆盖MVC视图模型中的EF字段名称不起作用

我正在编写一个MVC5 / EF6网站,并且试图保持数据模型和视图模型的分离尽可能完整。

因此,我的EF类(存储在单独的程序集中)如下所示:

public class WorksOrder
{
    [Key]
    public int Id { get; set; }

    public string CreatedById { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的视图程序集(视图控制器所在的地方)中有一个元数据类,在其中重写显示名称并添加错误消息

public class WorksOrder
{
    [Display(Name = "Created by")]
    [Required(ErrorMessage = "created by cannot be blank")]
    public string CreatedById { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将两个类附加到我的视图模型中:

TypeDescriptor.AddProviderTransparent(
    new AssociatedMetadataTypeTypeDescriptionProvider(typeof(EF.Models.WorksOrder),
    typeof(ViewMetadata.WorksOrder)), typeof(EF.Models.WorksOrder));
Run Code Online (Sandbox Code Playgroud)

当我显示表单时,字段标签是“ CreatedById”,而不是元数据类中指定的显示属性(“创建者”)。我知道AddProviderTransparent起作用了,因为如果我尝试使用CreatedById字段为空提交表单,则会收到错误消息(“创建者不能为空”)。

编辑:这是剃刀文件(我已经清除了不重要的东西(divs等)。

@model App.Models.WorksOrderCreateModel

@using (Html.BeginForm())
{
    @Html.LabelFor(model => model.WorksOrder.CreatedById, new { @class = "control-label col-md-3" })
    @Html.TextBoxFor(model => model.WorksOrder.CreatedById, new { @class = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework asp.net-mvc-5

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

早期访问ASP.NET MVC中的异步操作结果

当我们在MVC中使用async动作时,如下例所示,post model模型数据可以在10秒内查看(此处为1秒)?我很困惑,如何在1秒内获得数据获取数据需要10秒钟???

例如:

    public async Task<ActionResult> GetPosts()
    {

        // ...
        IPost posts = await PostService.GetPosts();// assume this take 10 seconds
        // ...

        return View(model: posts);//BUT we return in 1 second! How posts model available in view for show to the user earlier than 10 seconds?
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc async-await asp.net-mvc-5

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

不在sportsstore asp.net mvc 5中实现接口

我正在通过apress关注asp.net mvc 5的书,我遇到了这个错误:

"SportsStore.Domain.Concrete.EFProductRepository'未实现接口成员'SportsStore.Domain.Abstract.IProductRepository.Products.set"

这就是我在EFProductRepository中所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SportsStore.Domain.Abstract;
using SportsStore.Domain.Entities;

namespace SportsStore.Domain.Concrete
{
    public class EFProductRepository : IProductRepository
    {
        public EFDbContext context = new EFDbContext();

        public IEnumerable<Product> Products
        {
            get { return context.Products; }
        }       
    }
}
Run Code Online (Sandbox Code Playgroud)

在IProductRepository我有:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SportsStore.Domain.Entities;

namespace SportsStore.Domain.Abstract
{
    public interface IProductRepository
    {
        IEnumerable<Product> Products { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

知道为什么我在EFProductRepository.cs类中收到错误吗?提前感谢Laziale的每一个建议

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

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

将DB从本地更改为azure不起作用

我已经在visual studio 2013中创建了MVC 5项目,该项目针对本地数据库并且按预期工作,现在我想用我在azure中创建的新数据库替换localDb(v11)(相同的数据结构),我该怎么做那个?我想我需要用服务器和数据库名称替换连接字符串,但由于连接字符串太长,我不知道究竟应该删除和添加什么,请协助.

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

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

mvc将模型传递给动作方法

我正在使用MVC 5,并有一个页面,我将列出合同的付款.有时候没有与合同相关的付款.我的视图带来了列出的模型:

@model List<MyProject.Models.PaymentViewModel>
Run Code Online (Sandbox Code Playgroud)

付款视图上的操作方法如下所示:

        [HttpGet]
    public ActionResult Payment(int id)
    {
        var payments = contractController.GetPaymentsForActiveContract(id);

        return View(payments);
    }
Run Code Online (Sandbox Code Playgroud)

现在GetPaymentsForActiveContract返回一个List,这在我使用时工作正常

@Html.Partial("partialviews/_Payments")
Run Code Online (Sandbox Code Playgroud)

在我看来.但是我现在要做的是调用另一个动作方法,它将返回一个显示付款表的视图,或者如果没有付款就会返回另一个没有付款的操作方法.

我将该行动定义为:

        public ActionResult GetPayments(List<PaymentViewModel> payments)
    {
        if (payments.Count > 0)
        {
            return PartialView("partialviews/_Payments", payments);
        }
        return PartialView("partialviews/_NoPayments");
    }
Run Code Online (Sandbox Code Playgroud)

我不确定如何从我的视图中将模型传递给此Action.我正在查看@Html方法,但似乎找不到任何允许我调用GetPayments方法传递模型并让它返回Partial View的东西.

asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

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

使用日期时间和日期选择器

我想在我的asp.net mvc web应用程序上测试数据纠察队.

1.所以我创建了以下测试模型: -

public class TestClass
    {
        [DataType(DataType.Date)]
        public DateTime D { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

2.我添加了以下脚本: -

  $(function () {
    $(".datefield").datepicker();
});
Run Code Online (Sandbox Code Playgroud)

3.根据我的观点,我有以下内容: -

@model MvcApplication6.Models.TestClass


@Html.EditorFor(item=>item.D)
Run Code Online (Sandbox Code Playgroud)

现在压延机会显示好,但我有这两个问题: -

1.如果在action方法中,我将数据时间指定为今天的日期,如下所示: -

 public ActionResult Index()
            {
                TestClass t = new TestClass();
               t.D = DateTime.Now.Date;

                return View(t);
            }
Run Code Online (Sandbox Code Playgroud)

然后日历将切换日期和月份,因此6月12日成为12月6日如下: - 在此输入图像描述

2.如果我将dataitme删除为等于今天的日期,我将获得以下默认值: -

01/01/0001
Run Code Online (Sandbox Code Playgroud)

3.如果我指定datetime以允许null,并且我没有指定任何defualt值,我将得到以下异常

[DataType(DataType.Date)]
        public DateTime? D { get; set; }
Run Code Online (Sandbox Code Playgroud)

传递到字典中的模型项为null,但此字典需要"System.DateTime"类型的非null模型项.

那么有人可以就导致这三个问题的原因提出建议吗?谢谢

编辑 确定我将我的属性更改为String而不是日期时间,如下所示: -

[DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public string CreateDate { get; …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc jquery-ui-datepicker asp.net-mvc-5

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

.net mvc5在select中显示不同的元素

我正在使用.net MVC5框架开发Web应用程序.我的视图从模型中获取信息,并在两个单独的选择元素中显示建筑类型和楼层数.但是,我只需要显示独特的建筑类型和楼层数信息.如果问题的形象下面![

我不知道该怎么做.这是该页面的代码:

@model IEnumerable<BIRDSResidential.Models.ResidentialBuilding>
@{
    ViewBag.Title = "ResidentialBuilding";
}

<div class="row">
    <div class="col-md-3">
        <select>
            @foreach (var item in Model)
            {
                <option value="">@Html.DisplayFor(modelItem => item.type)</option>
            }
        </select>
    </div>
    <div class="col-md-3">
        <select>
            @foreach (var item in Model)
            {
                <option value="">@Html.DisplayFor(modelItem => item.stories)</option>
            }
        </select>
    </div>
    <div class="col-md-offset-5 col-md-1">
        <button type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-info-sign"></span>
        </button>
    </div>
</div
Run Code Online (Sandbox Code Playgroud)

>

编辑

我将上面的代码更新为以下内容:

<div class="row">
    <div class="col-md-3">
        @Html.DropDownList("ResidentialBuilding", new SelectList(Model.Select(x => x.type).Distinct()))
    </div>
    <div class="col-md-3">
        @Html.DropDownList("ResidentialBuilding", new SelectList(Model.Select(x => x.stories).Distinct()))
    </div>
    <div class="col-md-3"> …
Run Code Online (Sandbox Code Playgroud)

.net razor asp.net-mvc-5

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

我收到一个System.NullReferenceException错误,我无法理解

我收到此错误:

"App_Web_lmzivtl2.dll中发生了'System.NullReferenceException'类型的异常,但未在用户代码中处理.附加信息:对象引用未设置为对象的实例."

以下是我使用的代码:

    @model IEnumerable<PtExamen.Models.Teste>

   @{
       ViewBag.Title = "Teste";
       Layout = "~/Views/Shared/_Layout.cshtml";
   }

   <h2>Teste</h2>
    @{foreach (var item in Model )
    {
       <p>
          &nbsp     @Html.Raw(ViewBag.Descriere)  <br> <br>
          &nbsp &nbsp  <a href="@ViewBag.NumeFisier" target="_blank">@ViewBag.test</a>)                                
       </p>
   }
   }
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会出现这个错误,因为到目前为止我已经使用了类似的例子而且我没有遇到这个问题.任何帮助,解释都会很棒.提前致谢!

我在其他地方使用了类似的东西,这个错误没有发生,我真的找不到是什么使代码的这部分没有引起任何问题,另一个做了.这是我使用类似的东西的另一个地方,但我没有任何问题:

@model IEnumerable<PtExamen.Models.Capitole>
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}




<div>
    <div id="div-1">
     <p><h2> @ViewBag.MateriaSelectata.ToUpper()</h2></p>
    </div>

    <div id="div-1a">

            @foreach (var item in Model)
            {
                string materiasel = ViewBag.MateriaSelectata;
                int cidSelectat = Convert.ToInt32(ViewBag.cidSelectat);
               <p>@Html.ActionLink(item.den_capitol, "Index", new { materia = item.disciplina , cid = item.id }) …
Run Code Online (Sandbox Code Playgroud)

html c# asp.net-mvc-5

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

DbContext对象无法在循环内工作

这是我的ActionMethod,它不会将数据填充到数据库中.

private StudentDBContext db = new StudentDBContext();

public ActionResult PopulateData()
        {
            Student objStu = new Student();

            for(int i=0;i<2;i++)
            {
                objStu.ID = i+1;
                objStu.name = "something";
                db.Students.Add(objStu);
                db.SaveChanges();
            }


            return View();
        }
Run Code Online (Sandbox Code Playgroud)

只有当它没有循环使用它时(如下所示)为什么会这样呢?

public ActionResult PopulateData()
        {
            Student objStu = new Student();

            //for(int i=0;i<2;i++)
            //{
                objStu.ID = 1;
                objStu.name = "something";
                db.Students.Add(objStu);
                db.SaveChanges();
            //}


            return View();
        }
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc entity-framework asp.net-mvc-5

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

重新获取模型状态错误消息

我有以下行动方法: -

 public ActionResult AddServerToRack(AddServerToRack s)
        {

            if (ModelState.IsValid)
            {
                try
                {
                   // code goes here
                }
            }
            var errorDesc = ModelState.Select(a=>a.Value.Errors.Select(a2=>a2.ErrorMessage)).ToList();
            string desc = "";
            foreach (var i in errorDesc)
            {
                desc = desc + " " + i.ToString();
            }
            return Json(new { IsSuccess = false, description = desc}, JsonRequestBehavior.AllowGet);
        }
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取模型状态内的所有错误消息,并将它们作为json对象发送.但目前我无法在我的操作方法结束时使用foreach获取错误消息的描述.所以任何人都可以建议,我怎么能得到所有的模型状态错误信息描述.谢谢

entity-framework modelstate entity-framework-5 asp.net-mvc-5

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