我一直在探索在ASP.NET MVC3环境中编辑/更新实体框架5中的记录的不同方法,但到目前为止,它们都没有勾选我需要的所有框.我会解释原因.
我找到了三种方法,我将提到它的优点和缺点:
方法1 - 加载原始记录,更新每个属性
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
original.BusinessEntityId = updatedUser.BusinessEntityId;
original.Email = updatedUser.Email;
original.EmployeeId = updatedUser.EmployeeId;
original.Forename = updatedUser.Forename;
original.Surname = updatedUser.Surname;
original.Telephone = updatedUser.Telephone;
original.Title = updatedUser.Title;
original.Fax = updatedUser.Fax;
original.ASPNetUserId = updatedUser.ASPNetUserId;
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
优点
缺点
方法2 - 加载原始记录,设置更改的值
var original = db.Users.Find(updatedUser.UserId);
if (original != null)
{
db.Entry(original).CurrentValues.SetValues(updatedUser);
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
优点
缺点
方法3 - 附加更新的记录并将状态设置为EntityState.Modified
db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
优点
我想在asp.net-mvc上传文件.如何使用html input file控件上传文件?
如何在Razor View页面中导入命名空间?
我正在使用Razor作为视图引擎创建一个示例ASP.NET MVC 3站点.剃刀语法以@字符开头,例如@RenderBody().如果我在我的cshtml页面上写@test,它会给我解析错误
CS0103:当前上下文中不存在名称"test"
如何逃脱'@'角色?
我已经在数据库表中保存了安全/清理的HTML.
如何在Razor视图中写出此HTML内容?
它总是逃避字符<和&符号&.
使用WebForms视图引擎,我通常会使用三元运算符来处理非常简单的条件,特别是在HTML属性中.例如:
<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Run Code Online (Sandbox Code Playgroud)
上面的代码将为<a>标记提供一个类auth或anon取决于用户是否经过身份验证.
Razor视图引擎的等效语法是什么?因为Razor需要HTML标签来"知道"何时跳入和跳出代码和标记,所以我现在仍然坚持以下内容:
@if(User.Identity.IsAuthenticated) { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Run Code Online (Sandbox Code Playgroud)
温和地说,这很可怕.
我很想做一些喜欢这一点,但我在努力了解如何在剃刀:
<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
Run Code Online (Sandbox Code Playgroud)
-
更新:
与此同时,我创建了这个HtmlHelper:
public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
Run Code Online (Sandbox Code Playgroud)
这可以从Razor这样调用:
<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Run Code Online (Sandbox Code Playgroud)
尽管如此,我希望有一种方法可以使用三元运算符而不会退回到扩展方法中.
为什么Json Request Behavior需要?
如果我想将HttpGet请求限制为我的操作,我可以使用该[HttpPost]属性修饰操作
例:
[HttpPost]
public JsonResult Foo()
{
return Json("Secrets");
}
// Instead of:
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
为什么[HttpPost]不够?
为什么框架会JsonRequestBehavior.AllowGet为我们所拥有的每一个"捣乱"我们JsonResult.如果我想拒绝获取请求,我将添加该HttpPost属性.
我有一个输入文本是这样的:
<div class="editor-label">
@Html.LabelFor(model => model.EmployeeId, "Employee Number")
</div>
<div class="editor-field textBoxEmployeeNumber">
@Html.EditorFor(model => model.EmployeeId)
@Html.ValidationMessageFor(model => model.EmployeeId)
</div>
Run Code Online (Sandbox Code Playgroud)
我想使用jquery设置此输入文本的值,所以我这样做:
<div class="editor-label">
<label for="EmployeeId">Employee Number</label>
</div>
<div class="editor-field textBoxEmployeeNumber">
<input class="text-box single-line" data-val="true" data-val-number="The field EmployeeId must be a number." data-val-required="The EmployeeId field is required." id="EmployeeId" name="EmployeeId" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="EmployeeId" data-valmsg-replace="true"></span>
</div>Run Code Online (Sandbox Code Playgroud)
但是,它不起作用...我的语法错误是什么?
我正在asp.net mvc 3中开发一个Web应用程序.我对它很新.在使用剃刀的视图中,我想声明一些局部变量并在整个页面中使用它.如何才能做到这一点?
能够执行以下操作似乎相当微不足道:
@bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName);
@if (isUserConnected)
{ // meaning that the viewing user has not been saved
<div>
<div> click to join us </div>
<a id="login" href="javascript:void(0);" style="display: inline; ">join</a>
</div>
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.这可能吗?
我ViewBag在MVC 3中看到了.ViewData与MVC 2有什么不同?
asp.net-mvc-3 ×10
razor ×5
asp.net-mvc ×4
c# ×4
.net ×3
asp.net ×1
difference ×1
html ×1
javascript ×1
jquery ×1
security ×1
viewbag ×1
viewdata ×1
webmatrix ×1