标签: asp.net-mvc-3

实体框架5更新记录

我一直在探索在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次查询以加载原始数据然后更新它

方法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)

优点

  • 仅将已修改的属性发送到数据库

缺点

  • 视图需要包含每个属性
  • 在数据库上进行2次查询以加载原始数据然后更新它

方法3 - 附加更新的记录并将状态设置为EntityState.Modified

db.Users.Attach(updatedUser);
db.Entry(updatedUser).State = EntityState.Modified;
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

优点

  • 1 x查询数据库以进行更新 …

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

856
推荐指数
5
解决办法
43万
查看次数

文件上载ASP.NET MVC 3.0

我想在上传文件.如何使用html input file控件上传文件?

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

817
推荐指数
10
解决办法
34万
查看次数

722
推荐指数
8
解决办法
28万
查看次数

在剃刀视图引擎中转义@字符

我正在使用Razor作为视图引擎创建一个示例ASP.NET MVC 3站点.剃刀语法以@字符开头,例如@RenderBody().如果我在我的cshtml页面上写@test,它会给我解析错误

CS0103:当前上下文中不存在名称"test"

如何逃脱'@'角色?

razor asp.net-mvc-3

535
推荐指数
10
解决办法
22万
查看次数

编写/输出未转义的HTML字符串

我已经在数据库表中保存了安全/清理的HTML.

如何在Razor视图中写出此HTML内容?

它总是逃避字符<和&符号&amp;.

asp.net-mvc razor asp.net-mvc-3

425
推荐指数
5
解决办法
27万
查看次数

如何在剃刀中使用三元运算符(特别是在HTML属性上)?

使用WebForms视图引擎,我通常会使用三元运算符来处理非常简单的条件,特别是在HTML属性中.例如:

<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Run Code Online (Sandbox Code Playgroud)

上面的代码将为<a>标记提供一个类authanon取决于用户是否经过身份验证.

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)

尽管如此,我希望有一种方法可以使用三元运算符而不会退回到扩展方法中.

razor asp.net-mvc-3

387
推荐指数
5
解决办法
16万
查看次数

为什么需要JsonRequestBehavior?

为什么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属性.

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

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

如何使用jQuery设置输入文本的值

我有一个输入文本是这样的:

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

但是,它不起作用...我的语法错误是什么?

html javascript jquery asp.net-mvc-3

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

如何在Razor中声明局部变量?

我正在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)

但这不起作用.这可能吗?

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

339
推荐指数
5
解决办法
32万
查看次数

ViewData和ViewBag有什么区别?

ViewBag在MVC 3中看到了.ViewData与MVC 2有什么不同?

.net viewdata viewbag asp.net-mvc-3 difference

325
推荐指数
9
解决办法
19万
查看次数