Tabs 为什么模型绑定选项卡被禁用?

Tabs 为什么模型绑定选项卡被禁用?,tabs,glimpse,Tabs,Glimpse,我使用的是MVC4版本1.2.0 我注意到,当我在浏览器中打开浏览UI时,“模型绑定”选项卡被禁用。我不知道如何启用它。阅读显示您可以忽略选项卡 <glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd"> <tabs> <ignoredTypes> <add type="{Namespace.Type, AssemblyName}"

我使用的是MVC4版本1.2.0

我注意到,当我在浏览器中打开浏览UI时,“模型绑定”选项卡被禁用。我不知道如何启用它。阅读显示您可以忽略选项卡

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
    <tabs>
        <ignoredTypes>
            <add type="{Namespace.Type, AssemblyName}"/>
        </ignoredTypes>
    </tabs>
</glimpse>
使用PRG思想,我重新编写了代码,如下所示:

[HttpPost]
public ActionResult Index([ModelBinder(typeof(MyModelBinder))]HomeIndexViewModel viewModel)
{
    return this.RedirectToAction("SaveSuccess");
}

public ActionResult SaveSuccess(HomeIndexViewModel viewModel)
{
    return this.View();
}

我遇到的问题是,在历史记录选项卡中,当我检查显示使用中的DefaultModelBinder的“SaveSuccess”请求adn时,可以看到“ModelBinder”已启用。但是,在使用自定义模型绑定器的情况下,我的索引请求不会启用该选项卡。

当给定页面请求具有模型绑定活动时,将启用“一瞥”中的模型绑定选项卡。如果没有模型绑定活动,该选项卡将显示为禁用

模型绑定选项卡的另一个常见问题是使用PRG(POST-REDIRECT-GET)模式

如果包含模型绑定的action方法重定向用户,那么Spile将显示最后一个请求(即GET),从而有效地隐藏模型绑定活动。您可以使用“一瞥”中的“历史记录”选项卡选择上一个请求(原始帖子)并查看模型绑定数据


最后,如果您使用
ModelBinderAttribute
(至少目前是这样),那么Spieve就帮不上忙了。而是使用
ModelBinders.Binders.Add()
或更好的
IModelBinderProvider
注册自定义模型绑定器。《一瞥》会选择以这些方式注册的模型活页夹。

我认为问题在于您提到的PRG。我刚刚对一个动作方法做了一个AJAX POST请求,“模型绑定”选项卡被启用(在我为该请求单击“历史记录”选项卡中的Inspect之后)。你能证明我可以用
索引
操作方法解决问题吗?我做错了什么?你是对的。我遵循了这里给出的示例:现在模型绑定选项卡已启用。对不起,我用接受的答案跳过了枪。虽然我可以在使用DefaultModelBinder时分析“模型绑定”选项卡,但使用我的客户模型绑定器的请求不会启用该选项卡。我已经更新了我的代码以反映我现在正在尝试的内容。您的
索引
操作方法没有问题,但是如果您使用
ModelBinderAttribute
(至少目前是这样),scape也帮不上忙。而是使用
ModelBinders.Binders.Add()
或更好的
IModelBinderProvider
ModelBinderProviders.BinderProviders.Add()
当然;我会看看是否能为它准备一个简单的复制/测试用例。即使我显式地从DefaultModelBinder继承,也不会触发该选项卡。
[HttpPost]
public ActionResult Index([ModelBinder(typeof(MyModelBinder))]HomeIndexViewModel viewModel)
{
    return this.View(viewModel);
}

public class MyModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var viewModel = new HomeIndexViewModel();

        viewModel.Name = "From model binder.";
        return viewModel;
    }
}
[HttpPost]
public ActionResult Index([ModelBinder(typeof(MyModelBinder))]HomeIndexViewModel viewModel)
{
    return this.RedirectToAction("SaveSuccess");
}

public ActionResult SaveSuccess(HomeIndexViewModel viewModel)
{
    return this.View();
}