我已经看了几次EF Code First的演示,还没有看到EFCF如何与存储过程一起工作.
如何声明一个将使用某些sp的方法?我是否可以将实体传递给调用sp的方法,而无需手动将实体属性映射到sp参数?
另外,如果我改变模型会发生什么?它会在从模型中重新创建表格时丢失我的sp吗?触发器呢?
如果不支持这些东西,是否有计划在将来支持它们?
这是验证的模型:
[MetadataType(typeof(TagValidation))]
public partial class Tag
{
}
public class TagValidation
{
[Editable(false)]
[HiddenInput(DisplayValue = false)]
public int TagId { get; set; }
[Required]
[StringLength(20)]
[DataType(DataType.Text)]
public string Name { get; set; }
//...
}
Run Code Online (Sandbox Code Playgroud)
这是观点:
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Tag</legend>
<div>@Html.EditorForModel()</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Run Code Online (Sandbox Code Playgroud)
这是得到的渲染:
<form action="/Tag/Create" method="post">
<fieldset>
<legend>Tag</legend>
<div><input data-val="true" data-val-number="The field TagId must be a number." data-val-required="The …Run Code Online (Sandbox Code Playgroud) 看来这两者有着相似的目的.很高兴看到一些例子何时使用其中一个,优点和缺点,以及指出哪些是关键差异.
我在ASP.NET MVC 3应用程序中使用代码优先方法,并且models(public int Id { get; set; })中的所有整数主键默认配置为具有自动递增的标识.如何禁用此功能并启用手动输入主键的整数?
实际情况是Id整数具有特殊含义,因此我希望它们在创建时可以选择,然后可以编辑.如果在创建时未给出整数,则自动递增,这将是理想的,否则使用指定的值.但可编辑的主要字段是我的主要需求.在ASP.NET MVC 3中有没有办法优雅地做到这一点?
我创建了一个自动增量的主键.
ID=1, ID=2ID=3如何将自动增量重置或重启为1?
我有一个带有表单身份验证的ASP.NET MVC 3应用程序.由于某些我无法看到的原因,登录重定向网址/Account/Login?ReturnUrl=%2fSecure%2fAction代替/Account/LogOn?ReturnUrl=%2fSecure%2fAction.区别很小,它使用/ Account/Login而不是/ Account/LogOn.
我的web.config表单部分是正确的.否则可能会影响登录网址?
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="720" />
</authentication>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用缓存配置文件缓存我的mvc应用程序中的子操作,但我得到一个例外:持续时间必须是正数.
我的web.config看起来像这样:
<caching>
<outputCache enableOutputCache="true" />
<outputCacheSettings>
<outputCacheProfiles>
<add name="TopCategories" duration="3600" enabled="true" varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Run Code Online (Sandbox Code Playgroud)
而我的孩子的动作是这样的:
[ChildActionOnly]
[OutputCache(CacheProfile = "TopCategories")]
//[OutputCache(Duration = 60)]
public PartialViewResult TopCategories()
{
//...
return PartialView();
}
Run Code Online (Sandbox Code Playgroud)
我只是打电话给一个视图 @Html.RenderAction("TopCategories", "Category")
但是我收到一个错误:Exception Details:System.InvalidOperationException:Duration必须是一个正数.
如果我不使用缓存配置文件,它的工作原理.知道问题是什么?
我在这里完全失败了.这工作得早.我有一个使用表单身份验证的MVC3应用程序.在web配置中,我有以下内容:
<authentication mode="Forms">
<forms loginUrl="~/Login/Index" timeout="2880"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)
但是,出于某种原因,当重定向时,或者在检查FormsAuthentication.LoginUrl时,它仍然使用默认的/ Account/Login.哪个不存在.为什么web.config不会覆盖这个?
我@Html.EditorForModel()在所有观点上使用帮助器.
他希望在我的模型中跳过两个字段,但只有在这个视图中,另一个他必须像往常一样继续显示这些字段.
如何才能在此视图中跳过这两个字段?
这是我用ajax post方法调用的控制器动作:
[HttpPost]
public ActionResult Add(Comment comment)
{
if (User.Identity.IsAuthenticated)
{
comment.Username = User.Identity.Name;
comment.Email = Membership.GetUser().Email;
}
if (ModelState.IsValid)
{
this.db.Add(comment);
return PartialView("Comment", comment);
}
else
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
如果用户已登录,则提交表单没有"用户名"和"电子邮件"字段,因此它们不会被ajax调用传递.当action被调用时,ModelStat.IsValid返回false,因为这两个属性是必需的.在为属性设置有效值后,如何触发模型验证以更新ModelState?