C# MVC4将视图模型带入两个不同的HTML表单视图模型未设置
我在一个页面中使用两个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; }
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>
}
}