首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从动作中使用ModelBinder

从动作中使用ModelBinder
EN

Stack Overflow用户
提问于 2013-07-23 19:16:00
回答 1查看 389关注 0票数 0

我正在使用第三方报告引擎(刺激性软件),它通过POST调用控制器上的操作。在表单中,许多字段被发送到第三方的力学中。在操作内部,我需要一些参数,我的所有参数都在URL中。

我希望能够在我的行动中使用模型粘合剂。

目前,我正在使用以下方法逐个获取每个字段

代码语言:javascript
复制
var queryString = HttpUtility.ParseQueryString(Request.UrlReferrer.Query);
var preparedBy = queryString["preparedBy"];
var preparedAt = (queryString["preparedAt"] != null) ? Convert.ToDateTime(queryString["preparedAt"]) : DateTime.Today;

我更喜欢使用模型并使用UrlReferrer进行绑定。我创建了一个从操作绑定的UrlReferrerValueProvider。我试过了,但我在binder.BindModel上得到了一个

代码语言:javascript
复制
public class UrlReferrerValueProvider : NameValueCollectionValueProvider
{
    public UrlReferrerValueProvider(ControllerContext controllerContext)
        : base(HttpUtility.ParseQueryString(controllerContext.HttpContext.Request.UrlReferrer.Query), CultureInfo.InvariantCulture)
    {
    }
}

public ActionResultat GetReportSnapshot()
{
    var bindingContext = new ModelBindingContext()
        {
            ValueProvider = new UrlReferrerValueProvider(ControllerContext),
            ModelName = "MyReportModel",
            FallbackToEmptyPrefix = true
        };
    var binder = new DefaultModelBinder();
    var myReportModel = binder.BindModel(ControllerContext, bindingContext);

    [...]
    return new EmptyResult();
}

public class MyReportModel
{
    public string PreparedBy {get;set;}
    public DateTime PreparedAt {get;set;}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 20:49:01

根据评论编辑。

代码语言:javascript
复制
public class MyReportModel
{
    public string PreparedBy {get;set;}
    public DateTime PreparedAt {get;set;}
}

public class UrlReferrerValueProvider : NameValueCollectionValueProvider
{
    public UrlReferrerValueProvider(ControllerContext controllerContext)
        : base(HttpUtility.ParseQueryString(controllerContext.HttpContext.Request.UrlReferrer.Query), CultureInfo.InvariantCulture)
    {
    }
}

public ActionResult GetReportSnapshot(MyReportModel model)
{
    this.UpdateModel(model, new UrlReferrerValueProvider(ControllerContext));

    return new EmptyResult();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17819116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档