小编And*_*eas的帖子

提交Ajax.Beginform后更新部分视图

我是.NET mvc的新手.

在"DisplayThings"视图中我有类似的东西:

@foreach (var thing in Model)
{
    @Html.Partial("DisplayPartial", thing)
}
Run Code Online (Sandbox Code Playgroud)

在部分视图"DisplayPartial"中我有

@using (Ajax.BeginForm("Afunc", new AjaxOptions ()))
{
    @Html.EditorFor(model => model.AstringThing)
    @Html.EditorFor(model => model.AintThing)

    <input type="submit" name="submit" value="Ajax Post" />
}
Run Code Online (Sandbox Code Playgroud)

目前,"Afunc"-Action将模型保存到数据库,然后重定向到控制器操作以从数据库中检索所有"事物"并呈现整个"显示"视图.

我的问题是:当我按下其中一个提交按钮时(列表中的每个"东西"都有一个提交按钮).我只希望那个局部视图重新加载/反映我的变化.我不想重新加载整个"Displaythings"视图.我该怎么做呢?如果我只是返回局部视图,那么除了那个局部视图之外我会失去其他一切

如果这是一个不好的方法,请给我指示.

更新:

当我在新页面中呈现部分视图时,我仍然做错了.我的控制器:

public ActionResult Afunc(ThingModel thingmodel)
{
    // do

    return PartialView("DisplayPartial", thingmodel);
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用UpdateTargetId和onsuccess两个结果相同(新页面)

c# ajax asp.net-mvc partial-views asp.net-mvc-4

9
推荐指数
1
解决办法
3万
查看次数

Autofac 委托工厂,并传递容器

我有一个关于委托工厂的问题:autofac docs

我了解他们如何建立工厂,但我没有得到解决部分:

var shareholdingFactory = container.Resolve<Shareholding.Factory>();
var shareholding = shareholdingFactory.Invoke("ABC", 1234);
Run Code Online (Sandbox Code Playgroud)

看起来您必须绕过容器才能解决。也许我必须使用我只在运行时知道的参数来调用一些东西。如何在不将容器传递给例如服务方法的情况下做到这一点?

更新

所以你应该通过工厂?

c# dependency-injection autofac

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