传递ViewModel - 在禁用JavaScript时查看控制器

时间:2012-12-12 22:44:50

标签: c# asp.net-mvc asp.net-mvc-4 viewmodel

我很难在没有JavaScript的情况下开发功能。

我有一个ViewModel:

public class AccountRegisterViewModel
{
    #region Properties
    public User User { get; set; }
    public ExternalAccounts ExtAccounts { get; set; }
    public LocalPassword Password { get; set; }
    public Company CompanyARegister { get; set; }
    public Company CompanyBRegister { get; set; }
    public bool SameCompanies { get; set; }
    public int NbCompanies { get; set; }
    ...
 }

在视图中,我有一个复选框链接,用于复制第一个公司和第二个公司 但是我不知道如何通过这个viewModel(View to Controller)保存我的数据并返回与公司copie相同的View ..

我在视野中尝试这个:

    @Html.ActionLink("Click", "CopyCompanies","Account", new { model = Model })             
    @Html.CheckBoxFor(model => model.SameCompanies)

在控制器中:

    [AllowAnonymous]
    public ActionResult CopyCompanies(AccountRegisterViewModel model)
    {

        ...
        if (model.SameCompanies)
        {
           // copie
        }else //clear
        ...
        return View("Step2Register", model);
     }

任何想法?谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

如果CopyCompanies操作方法需要AccountRegisterViewModel对象,则需要提供它。遗憾的是,您无法使用创建链接时所遵循的方法提供值。

你的两个选择是为AccountRegisterViewModel中的每个属性设置一个隐藏字段,然后让模型绑定创建对象,但即使这样也不理想,因为viewModel由复杂对象组成,所以你会有办法太多隐藏的领域。

我认为第二种选择是更好的方法,就是传递某种与AccountRegisterViewModel相对应的Id,CopyCompany可以使用它来查找所需的值。