小编dro*_*ani的帖子

MVC4 Ajax.BeginForm没有替换UpdateTargetId

关于Ajax.BeginForm的问题有很多关于使用返回局部视图正确更新目标元素的问题:
mvc4 ajax更新同一页面
ASP.NET MVC 4 - Ajax.BeginForm和html5
MVC 4(razor) - 控制器是返回部分视图但整个页面正在更新
MVC 4 Ajax没有更新页面中的PartialView
但是,所有这些都可以通过手动写出jQuery ajax或包含丢失的javascript文件来回答.

  @using (Ajax.BeginForm("PostcardDetails", new AjaxOptions()
  {
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "details"
  }))
  {
    <div id="PostcardSearchResults">
      @{Html.RenderAction("PostcardSearchResults", Model);}
    </div>
  }
  <div id="details">
  </div>
Run Code Online (Sandbox Code Playgroud)

相关控制器代码:

[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult PostcardSearchResults(PostcardSearchFilter filter)
{
        PostcardSearchResults model = new PostcardSearchResults(filter);
        return PartialView("_PostcardSearchResults", model);
}
Run Code Online (Sandbox Code Playgroud)

在我的布局中,我引用了这些jQuery文件.此外,我已经验证页面正在输出正确的路径,并且它找到了正确的文件.我试着开关的顺序unobtrusive-ajax.min.jsvalidate.min.js,没有成功.

<script type="text/javascript" src="@Url.Content("~/Scripts/globalize.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.9.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.10.0.custom.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> …
Run Code Online (Sandbox Code Playgroud)

c# ajax ajax.beginform asp.net-mvc-4 razor-2

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

使用AspNet Core MVC在Ajax请求中验证AntiForgeryToken

我一直在尝试重新创建ValidateAntiForgeryToken的Ajax版本 - 有许多关于如何为以前版本的MVC执行此操作的博客文章,但是对于最新的MVC 6,没有任何代码是相关的.不过,我要追求的核心原则是验证Cookie和Header __RequestVerificationToken,而不是将Cookie与表单值进行比较.我使用的是MVC 6.0.0-rc1-final,dnx451框架,所有的Microsoft.Extensions库都是1.0.0-rc1-final.

我最初的想法是继承ValidateAntiForgeryTokenAttribute,但是看一下源代码,我需要返回自己的授权过滤器实现来让它看看标题.

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class ValidateAjaxAntiForgeryTokenAttribute : Attribute, IFilterFactory, IFilterMetadata, IOrderedFilter
{
    public int Order { get; set; }
    public bool IsReusable => true;
    public IFilterMetadata CreateInstance(IServiceProvider serviceProvider)
    {
        return serviceProvider.GetRequiredService<ValidateAjaxAntiforgeryTokenAuthorizationFilter>();
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,我随后制作了自己的ValidateAntiforgeryTokenAuthorizationFilter版本

public class ValidateAjaxAntiforgeryTokenAuthorizationFilter : IAsyncAuthorizationFilter, IAntiforgeryPolicy
{
    private readonly IAntiforgery _antiforgery;
    private readonly ILogger _logger;
    public ValidateAjaxAntiforgeryTokenAuthorizationFilter(IAntiforgery antiforgery, ILoggerFactory loggerFactory)
    {
        if (antiforgery == null)
        {
            throw new ArgumentNullException(nameof(antiforgery));
        } …
Run Code Online (Sandbox Code Playgroud)

c# ajax antiforgerytoken asp.net-core-mvc dnx

12
推荐指数
2
解决办法
4604
查看次数

扩展方法为每个项目中的字段赋值?

我可以发誓已经为Queryable类构建了一个我无法找到的扩展方法,但也许我正在考虑一些不同的东西.

我正在寻找以下内容:

IQueryable<Entity> en = from e in IDB.Entities select e;
en.ForEach(foo => foo.Status = "Complete");
Run Code Online (Sandbox Code Playgroud)

en.Foreach()必不可少:

foreach(Entity foo in en){
   foo.Status = "Complete";
}
Run Code Online (Sandbox Code Playgroud)

这已经写好了吗?如果没有,是否可以编写所述扩展方法,最好允许该表上的任何LINQ表和任何字段.哪里是一个好的起点?

c# linq extension-methods iqueryable

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