我正在编写一个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) 当我们在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) 我正在通过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的每一个建议
我已经在visual studio 2013中创建了MVC 5项目,该项目针对本地数据库并且按预期工作,现在我想用我在azure中创建的新数据库替换localDb(v11)(相同的数据结构),我该怎么做那个?我想我需要用服务器和数据库名称替换连接字符串,但由于连接字符串太长,我不知道究竟应该删除和添加什么,请协助.
我正在使用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 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) 我正在使用.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) 我收到此错误:
"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>
  @Html.Raw(ViewBag.Descriere) <br> <br>
    <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) 这是我的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) 我有以下行动方法: -
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
asp.net-mvc-5 ×10
asp.net-mvc ×7
c# ×7
asp.net ×4
.net ×1
async-await ×1
azure ×1
html ×1
interface ×1
modelstate ×1
razor ×1