相关疑难解决方法(0)

URL.Action在构造URL时包含id

我正在使用ASP.Net MVC.这是来自名为Course的控制器的代码片段:

public ActionResult List(int id)
{
    var viewmodel.ShowUrl = Url.Action("Show", "Course");


    ...
}

public ActionResult Show(int id)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

viewmodel.ShowUrl获取"id"参数的值.所以viewmodel.ShowUrl变为"/ Course/Show/151"(id的值为151); 我希望能够根据用户交互在客户端上设置id部分.我希望viewmodel.ShowUrl的值为"/ Course/Show".

这对我来说似乎是个错误.我没告诉Url.Action包含id值.它正在独立完成.如果我想设置id值,那么我会做这样的事情:

var viewmodel.ShowUrl = Url.Action("Show", "Course", new {id = somevalue});
Run Code Online (Sandbox Code Playgroud)

那么,你如何阻止MVC添加id值?我可以将viewmodel.ShowUrl硬编码为"/ Course/Show",但这似乎是一个kludgy解决方案.谢谢.

asp.net-mvc-routing url.action asp.net-mvc-3

23
推荐指数
3
解决办法
2万
查看次数

禁用 HttpContext.Current.Request.Params 的请求验证

使用 MVC5 我[AllowHtml]在特定模型属性上使用以允许将 HTML 发布到服务器。

在代码的某些地方,我想像这样访问请求参数:

string wlid = HttpContext.Current.Request.Params["wlid"];
Run Code Online (Sandbox Code Playgroud)

但这会失败,HttpRequestValidationException如果请求中包含任何 HTML,即使模型属性用[AllowHtml].

有没有办法在HttpContext.Current.Request.Params["wlid"]不完全禁用请求验证的情况下访问?

也许禁用请求验证,访问 Request.Params 然后立即再次启用它?

.net asp.net-mvc-5

5
推荐指数
2
解决办法
1080
查看次数

如何在ASP.NET Core 2.0中访问服务中的Route Data/Value Provider数据?

我正在尝试编写基于策略的授权处理程序.处理程序的业务逻辑需要使用id通过默认路由传递的当前请求的记录.

[Authorize(Roles = "TaskAdmin", Policy = "RecordOwner")]
public IActionResult Index(int id) // <-- Need this id
{
    // <snip>

    return View();
}
Run Code Online (Sandbox Code Playgroud)

政策

这是我需要访问id路由值的类.

public class RecordOwnerHandler : AuthorizationHandler<RecordOwnerRequirement>
{
    private readonly ApplicationDbContext dbContext;

    public RecordOwnerHandler(ApplicationDbContext dbContext)
    {
        this.dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
    }

    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RecordOwnerRequirement requirement)
    {
        if (IsUserAuthorized(context))
        {
            context.Succeed(requirement);
        }

        //TODO: Use the following if targeting a version of
        //.NET Framework older than 4.6:
        // …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc dependency-injection asp.net-core asp.net-core-2.0

5
推荐指数
2
解决办法
2430
查看次数