【问题标题】:Can we update the Model properties in MVC view, without a post back or Ajax call? (ASP.Net MVC 3)我们可以在没有回发或 Ajax 调用的情况下更新 MVC 视图中的模型属性吗? (ASP.Net MVC 3)
【发布时间】:2012-05-05 12:37:12
【问题描述】:

只是想知道我们是否可以在服务器标签内的视图中更新模型属性,那么是否可以在用户输入输入后在 Java 脚本函数中更新它们。

这段代码运行良好,在模型绑定的帮助下,我能够在 Dialog 控制器中检索以下硬编码信息。 "(在 CallingModalDialogView2 动作方法中)

@Html.TextBoxFor(m => m.empname)
@Html.TextBoxFor(m => m.salary, new { @class = "homeSearchBy" })

 @{ MvcApp3.Models.employee emp = new MvcApp3.Models.employee();
    emp.empid = 12121;     //Hard coded some information 
    emp.empname = "Biki";
    emp.empid = 23;
    emp.salary = 111111111;
  }


@Html.MyFramework().Button("ok", Url.Action("CallingModalDialogView2", "Dialog", emp), "title1", "OK")

但是当我试图在文本框中输入一些信息并将它们分配给模型属性时,它不起作用。我做错了什么或者这在 MVC 中是不允许的吗?

【问题讨论】:

  • 我的意图是更新模型并在下一个按钮上单击将更新的模型传递给弹出窗口(可能是部分页面),而不进行任何回发。一旦用户在该页面中输入更多数据,最后的按钮单击应该执行 ajax 发布并传递用户在主页和弹出窗口中输入的所有信息。

标签: asp.net-mvc-3 model-view-controller


【解决方案1】:

您的问题的简短回答:否

Razor 代码全部在服务器端呈现。当您在浏览器中看到该页面时,服务器端操作已完成。

你的模特:

@Html.TextBoxFor(m => m.empname)
@Html.TextBoxFor(m => m.salary, new { @class = "homeSearchBy" })

@Html.HiddenFor(m=> m.empid )
@Html.HiddenFor(m=> m.empname )
@Html.HiddenFor(m=> m.salary )

或:

@Html.Hidden("empid", 1212 )
@Html.Hidden("empname", "Biki" )
@Html.Hidden("salary", 100000 )

然后:

<input type="button" id="change-button" value="change" />

使用 JQuery 更改数据非常容易:

<script>
$(function(){ 
  $("#change-button").click(function(){
    $("#empid").val(12);
    $("#empname").val("Morteza");

    // submit form without ajax
    $("form").submit(); 

    // submit form with ajax
    $.ajax({
      url: "Address of your action method",
      type: "Post", // "Get"
      data:  $("form").serialize(),
      success: function(){
        //...
      }
    });        
  });
});
</script>

我在许多项目中都使用这个解决方案并且对我来说工作正常!

【讨论】:

  • 那么这些信息如何在视图本身中得到更新呢? @{ MvcApp3.Models.employee emp = new MvcApp3.Models.employee(); emp.empid = 12121; //硬编码一些信息 emp.empname = "Biki"; emp.empid = 23; emp.salary = 111111111; }
  • 如果要在客户端更改数据,则必须使用客户端元素,例如 。然后通过 javascript 或 JQuery 更改值。
  • 这就是我尝试过的,但发现它无法更新我的模型。如果您尝试过并且工作正常,您可以发布示例吗?
猜你喜欢
  • 1970-01-01
  • 2011-06-12
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多