C# MVC4将视图模型带入两个不同的HTML表单视图模型未设置

C# MVC4将视图模型带入两个不同的HTML表单视图模型未设置,c#,.net,asp.net-mvc,asp.net-mvc-4,C#,.net,Asp.net Mvc,Asp.net Mvc 4,我在一个页面中使用两个html表单,我必须将我的屏幕值放入第二次提交以显示筛选值。但当我提交第二个表单时,我在控制器上使用空视图模型 这是我的视图模型 public class MerchantRelationsViewModel { public RelationsSelectCriteria Criteria { get; set; } public MerchantRelationsInfoSelectCriteria CriteriaInfo { get; set; }

我在一个页面中使用两个html表单,我必须将我的屏幕值放入第二次提交以显示筛选值。但当我提交第二个表单时,我在控制器上使用空视图模型

这是我的视图模型

public class MerchantRelationsViewModel
{
    public RelationsSelectCriteria Criteria { get; set; }
    public MerchantRelationsInfoSelectCriteria CriteriaInfo { get; set; }
    public MerchantRelations MerchantRelations { get; set; }

    public IList<MerchantRelationsSequenceRelationsDetailViewModel> SequenceRelationsList { get; set; }

    public IList<MerchantRelationsMerchantRelationsDetailViewModel> MerchantRelationsList { get; set; }

    public SelectList MerchantRelationComboList { get; set; }

    public int selectedItem { get; set; }
    public MerchantRelationsViewModel()
    {
        Criteria = new RelationsSelectCriteria();
        CriteriaInfo = new MerchantRelationsInfoSelectCriteria();
        MerchantRelations = new MerchantRelations();
        MerchantRelationsList = new List<MerchantRelationsMerchantRelationsDetailViewModel>();
        SequenceRelationsList = new List<MerchantRelationsSequenceRelationsDetailViewModel>();

    }



    [Required(ErrorMessage = "Merchant no cannot be null.")]
    [Display(Name = "Merchant No")]
    public long? MerchantNumber
    {
        get
        {
            if (Criteria.MerchantNumber == 0)
                return null;

            //2. criteria 
            CriteriaInfo.MerchantNumber = Criteria.MerchantNumber; 

            return Criteria.MerchantNumber;
        }
        set
        {
            Criteria.MerchantNumber = 0;
            if (value.HasValue)
                Criteria.MerchantNumber = value.Value;
        }
    }

    [Display(Name = "Merchant Name")]
    public string SignName
    {
        get
        {
            return MerchantRelations.SignName;
        }
        set
        {
            MerchantRelations.SignName = value;
        }
    }

    [Display(Name = "Merchant Type")]
    public string MainStoreFlagDscr
    {
        get
        {
            return MerchantRelations.MainStoreFlagDscr;
        }
        set
        {
            MerchantRelations.MainStoreFlagDscr = value;
        }
    }

    [Display(Name = "Query Type")]
    public int SelectedMerchantType
    {
        get
        {
            return CriteriaInfo.Option;
        }
        set
        {
            CriteriaInfo.Option = value;
        }
    }
}

当我调用QueryMechantRelationsInfo MerchantRelations视图模型时,该模型为空。我试图用HTML.BeginForm参数给出模型,但没有任何变化。我试图使用隐藏的s,我不能给那里的整个模型。没有j查询ajax调用,有什么方法可以做到这一点吗

您应该使用partialView和Ajax。使控制器返回PartialView。在视图中渲染部分视图,并使用Ajax发布表单

我不太确定您想要实现什么,但是,请将您的视图更新为

<div class="criteria-form criteria-form-three-col">
    <div class="clearfix">
        <div class="three-column-left">
            @Html.DisplayFor(m => Model.MerchantNumber)
            @Html.HiddenFor(m=>Model.MerchantNumber)
        </div>
        <div class="three-column-middle">
            <input type="submit" class="nar-btn nar-form-size75" value="Bul" />
        </div>
        <div class="three-column-right">
            @Html.DisplayFor(m => Model.SignName)
             @Html.HiddenFor(m=>Model.SignName)
        </div>
    </div>
</div>
     @using (Html.BeginForm("QueryMerchantRelationsInfo", "Home", FormMethod.Post, new { criteriaInfo = Model }))
 {
@Html.HiddenFor(m => Model.MerchantNumber)
@Html.HiddenFor(m => Model.SelectedMerchantType)
if (Model.MerchantRelationComboList != null && Model.MerchantRelationComboList.Count() > 0)
{ 
<div class="criteria-form criteria-form-three-col">
    <div class="clearfix">
        <div class="three-column-left">
            @Html.DisplayFor(m => m.MainStoreFlagDscr)
        </div>
        <div class="three-column-middle">
            @Html.DisplayFor(m => m.SelectedMerchantType, new { SelectItems =           Model.MerchantRelationComboList })
        </div>
        <div class="three-column-right">
            <input type="submit" class="nar-btn nar-form-size75" value="Göster" />
        </div>
    </div>
</div>
    }
 }

@DisplayFor(m=>Model.MerchantNumber)
@Html.HiddenFor(m=>Model.MerchantNumber)
@DisplayFor(m=>Model.SignName)
@Html.HiddenFor(m=>Model.SignName)
@使用(Html.BeginForm(“querymerchanrelationsinfo”,“Home”,FormMethod.Post,new{criteriaInfo=Model}))
{
@Html.HiddenFor(m=>Model.MerchantNumber)
@Html.HiddenFor(m=>Model.SelectedMerchantType)
if(Model.MerchantRelationComboList!=null&&Model.MerchantRelationComboList.Count()>0)
{ 
@DisplayFor(m=>m.MainStoreFlagDscr)
@DisplayFor(m=>m.SelectedMerchantType,新的{SelectItems=Model.MerchantRelationComboList})
}
}

我们不希望丢失第一次服务中检索到的数据。
[HttpPost]
    public virtual ActionResult QueryMerchantRelations(MerchantRelationsViewModel merchantRelationsViewModel )
    {
        //Call First service and set into view model for second criteria search


        return View("Index", merchantRelationsViewModel);
    }

    [HttpPost]
    public virtual ActionResult QueryMerchantRelationsInfo(MerchantRelationsViewModel merchantRelationsViewModel)
    {
        //Call second service for retrieving second data

        return View("Index", merchantRelationsViewModel);
    }
<div class="criteria-form criteria-form-three-col">
    <div class="clearfix">
        <div class="three-column-left">
            @Html.DisplayFor(m => Model.MerchantNumber)
            @Html.HiddenFor(m=>Model.MerchantNumber)
        </div>
        <div class="three-column-middle">
            <input type="submit" class="nar-btn nar-form-size75" value="Bul" />
        </div>
        <div class="three-column-right">
            @Html.DisplayFor(m => Model.SignName)
             @Html.HiddenFor(m=>Model.SignName)
        </div>
    </div>
</div>
     @using (Html.BeginForm("QueryMerchantRelationsInfo", "Home", FormMethod.Post, new { criteriaInfo = Model }))
 {
@Html.HiddenFor(m => Model.MerchantNumber)
@Html.HiddenFor(m => Model.SelectedMerchantType)
if (Model.MerchantRelationComboList != null && Model.MerchantRelationComboList.Count() > 0)
{ 
<div class="criteria-form criteria-form-three-col">
    <div class="clearfix">
        <div class="three-column-left">
            @Html.DisplayFor(m => m.MainStoreFlagDscr)
        </div>
        <div class="three-column-middle">
            @Html.DisplayFor(m => m.SelectedMerchantType, new { SelectItems =           Model.MerchantRelationComboList })
        </div>
        <div class="three-column-right">
            <input type="submit" class="nar-btn nar-form-size75" value="Göster" />
        </div>
    </div>
</div>
    }
 }