小编Jon*_*ian的帖子

如果在帖子后模型中的值发生更改,则表单仍会显示旧值

这种行为让我对自己的理智感到好奇.

我有一个表单有两个接受输入的地方,我们称之为ValueA和ValueB.用户可以在任何一个和表单提交中输入值.

<div id="MyUpdateTarget">
 <% using (Ajax.BeginForm("MyControllerAction", new AjaxOptions { UpdateTargetId = "MyUpdateTarget" })) { %>
  <%=Html.TextBox("ValueA", Model.ValueA, new Dictionary<string, object> {
                                                    { "onchange", "$('#SubmitButton').click(); return false;" },
       }) %>
  <%=Html.TextBox("ValueB", Model.ValueB, new Dictionary<string, object> {
                                                    { "onchange", "$('#SubmitButton').click(); return false;" },
       }) %>
  <input id="SubmitButton" type="submit" value="Save" style="display: none;" />
 <% } %>
</div>
Run Code Online (Sandbox Code Playgroud)

Controller Action如下所示:

public ActionResult MyControllerAction(MyViewModel viewModel)
{
Run Code Online (Sandbox Code Playgroud)

//做一些其他的事......

 return PartialView("MyPartialView", viewModel);
}
Run Code Online (Sandbox Code Playgroud)

ViewModel就是这样的:

public class MyViewModel
{
 private int _valueA;
 private int _valueB;

 public int …
Run Code Online (Sandbox Code Playgroud)

c# ajax asp.net-mvc http-post

7
推荐指数
2
解决办法
4233
查看次数

将SharpArchitecture的NHibernateSession与不同的线程结合使用

我在ASP.NET MVC 3应用程序中使用SharpArchitecture.一切都很美妙.

使用SharpArchitecture的NHibernateInitializer为每个请求初始化一个新的Session,如下所示:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        NHibernateInitializer.Instance().InitializeNHibernateOnce(InitializeNHibernateSession);
    }

    private void InitializeNHibernateSession(ISessionStorage sessionStorage)
    {
        NHibernateSession.ConfigurationCache = new NHibernateConfigurationFileCache(
            new[] { "App.Core" });
        NHibernateSession.Init(
            sessionStorage,
            new[] { Server.MapPath("~/bin/" + ApplicationSettings.Instance.NHibernateMappingAssembly) },
            new AutoPersistenceModelGenerator().Generate(),
            Server.MapPath("~/NHibernate.config"));

        NHibernateSession.AddConfiguration(ApplicationSettings.NHIBERNATE_OTHER_DB,
                                           new[] { Server.MapPath("~/bin/" + ApplicationSettings.Instance.NHibernateMappingAssembly) },
                                           new AutoPersistenceModelGenerator().Generate(),
                                           Server.MapPath("~/NHibernateForOtherDb.config"), null, null, null);
    }
Run Code Online (Sandbox Code Playgroud)

如您所见,我们也在访问多个数据库.一切都很好.

这是我遇到问题的地方.

我需要启动一个单独的线程来执行数据库轮询机制.我的意图是做这样的事情:

    protected void Application_Start()
    {
            ....
            ThreadingManager.Instance.ExecuteAction(() =>
            {
                // initialize another NHibernateSession within SharpArchitecture somehow
                NHibernateInitializer.Instance().InitializeNHibernateOnce(InitializeNHibernateSession);

                var service = container.Resolve<IDatabaseSynchronizationService>();
                service.SynchronizeRepositories();
            });
}
Run Code Online (Sandbox Code Playgroud)

通过我的SynchronizationService,一些存储库被调用.显然,当他们尝试访问其会话时,会抛出异常,因为Session为null.

这是我的问题.我如何利用SharpArchitecture的NHibernateSession并以某种方式获得它或它的副本,在我的轮询线程中旋转?我希望这可以在不必绕过使用SharpArchitecture使用的内置SessionManagers和SessionFactories的情况下完成.

nhibernate multithreading sharp-architecture asp.net-mvc-3

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