如何将ViewModel属性传递给ajax post方法?

时间:2013-03-08 18:55:14

标签: javascript ajax asp.net-mvc asp.net-mvc-3

 function ResendEmailInvite(internalUserId, familyMemberId) { 
       theinternalUserId = internalUserId;
       theFamilyMemberId = familyMemberId;
      if(confirm('Are you sure you want to resend this family member's invite?')){
         $.ajax({
             type: "POST",
             url:"/Admin/ResendFamilyMemberEmail",
             data: {internalUserId : theinternalUserId, familyMemberId : theFamilyMemberId}, 
             success: function(response){
                alert(response);
             },
             error: function(){
                alert("Error");
            }
        });
        return false;
    }
}

我正在使用ASP.net MVC 3。 在我看来,这是一个 ajax / javascript 方法。

就语法而言,这是正确的吗?

familyMemberId将是动态的,但userId不是。 我想将userId从我的viewModel传递给此ajax调用,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您要做的是将控制器中模型的数据导入视图。这就是MVC的全部意义所在。来自MSDN MVC 4 Tutorial

控制器:

您可以使用VS菜单系统和实体框架定义模型,以便实际访问数据库。

 public class YourController : Controller
{
     private YourDBContext db = new YourDBContext();

     public ActionResult YourAction(int user_id = 0)
    {
        User user = db.Users.find(user_id);
        if(user == null) {
           return HttpNotFound(); // Or unauthorized or whatever
        }
        return View(user);
    }
    //...

查看:

@Model IEnumerable<MvcUser.Models.User>

<!-- other stuff -->

 <script type="text/javascript>
 // the rest of your script
        function ResendEmailInvite(internalUserId, familyMemberId) { 
           theinternalUserId = @Model.userId;
           theFamilyMemberId = familyMemberId;
          if(confirm('Are you sure you want to resend this family member's invite?')){
             $.ajax({
                 type: "POST",
                 url:"/Admin/ResendFamilyMemberEmail",
                 data: {internalUserId : theinternalUserId, familyMemberId : theFamilyMemberId}, 
                 success: function(response){
                    alert(response);
                 },
                 error: function(){
                    alert("Error");
                }
            });
            return false;
        }
    }

这是有效的,因为正如您所指出的,在加载页面后userId不是动态的。如果你想要真正的动态行为,你需要在HTML中为javascript创建一些其他钩子。