C# 在一个视图中,两个具有相同名称、值对的ViewBag是否将0值返回给控制器?
我有两个ViewBag,我正在使用Dropdownlist绑定。这两个ViewBag具有相同的名称、值对。当我发回表单并使用模型检索数据时,模型中的值为0。我有两个div,我想一次提交一个,因为我正在使用Is Cloud累加器选择div?复选框。有什么问题C# 在一个视图中,两个具有相同名称、值对的ViewBag是否将0值返回给控制器?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有两个ViewBag,我正在使用Dropdownlist绑定。这两个ViewBag具有相同的名称、值对。当我发回表单并使用模型检索数据时,模型中的值为0。我有两个div,我想一次提交一个,因为我正在使用Is Cloud累加器选择div?复选框。有什么问题 [HttpGet] public ActionResult CreateNewTotalizerTag() { //This is RawTag List var
[HttpGet]
public ActionResult CreateNewTotalizerTag()
{
//This is RawTag List
var RawTaglist1 = cRTu.RawTagsList();
ViewBag.RawTaglist1 = new SelectList(RawTaglist1, "Real_Tag_Id", "R_Tag_Name");
//This is RawTag List
var RawTaglist2 = cRTu.RawTagsList();
ViewBag.RawTaglist2 = new SelectList(RawTaglist2, "Real_Tag_Id", "R_Tag_Name");
return View();
}
[HttpPost]
public ActionResult CreateNewTotalizerTag(RawTagVM rawTagVM)
{
//This is RawTag List
var RawTaglist1 = cRTu.RawTagsList();
ViewBag.RawTaglist1 = new SelectList(RawTaglist1, "Real_Tag_Id", "R_Tag_Name");
//This is RawTag List
var RawTaglist2 = cRTu.RawTagsList();
ViewBag.RawTaglist2 = new SelectList(RawTaglist2, "Real_Tag_Id", "R_Tag_Name");
return RedirectToAction("TotalizerTagsList");
}
//View
@using (Html.BeginForm("CreateNewTotalizerTag", "TotalizerTags", FormMethod.Post))
{
@Html.HiddenFor(x=>x.Real_Tag_Id)
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<!-- general form elements disabled -->
<div class="card card-warning">
<div class="card-header" style="background-color:#343a40">
<h3 class="card-title" style="color:white">Create Totalizer Tag</h3>
</div>
<!-- This form is to create Raw tag totalizer onPrem or onCloud -->
<div class="card-body">
<form role="form">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<div class="custom-control custom-switch">
@Html.CheckBoxFor(m => m.Is_Cloud_Totalizer, new { @class = "custom-control-input", id = "Is_Cloud_Totalizer" })
<label class="custom-control-label" for="Is_Cloud_Totalizer">Is Cloud Totalizer?</label>
</div>
</div>
</div>
</div>
<!-- On Cloud Inputs starts here -->
<div id="oncloud_totalizer" style="display:none">
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label>Enter Tag Name</label>
@Html.EditorFor(m => m.R_Tag_Name, new { htmlAttributes = new { @class = "form-control" } })
@*@Html.ValidationMessageFor(model => model.R_Tag_Name, "", new { @class = "text-danger" })*@
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Select Raw Tag</label>
@Html.DropDownListFor(m => m.Real_Tag_Id_Cloud, (IEnumerable<SelectListItem>)ViewBag.RawTaglist1, "Select Raw Tag", new { @class = "form-control", id = "Raw_Tag_List1",name="Raw_Tag_List1" })
</div>
</div>
</div>
</div>
<!-- On Prem Inputs starts here -->
<div class="row" id="onPrem_totalizer">
<div class="col-sm-6">
<div class="form-group">
<label>Select Raw Tag</label>
@Html.DropDownListFor(m => m.Real_Tag_Id, (IEnumerable<SelectListItem>)ViewBag.RawTaglist2, "Select Raw Tag", new { @class = "form-control", id = "Raw_Tag_List2",name="Raw_Tag_List2" })
</div>
</div>
</div>
<div class="form-group">
<center><button type="submit" id="submit" class="btn btn-primary">Create Totalizer</button></center>
</div>
</form>
</div>
<!-- /.card-body -->
</div>
<!-- /.card -->
<!-- general form elements disabled -->
<!-- /.card -->
</div>
</div>
</div>
}
<script>
$(document).ready(function () {
// Initialize select2
//$("#Raw_Tag_List1").select2();
//$("#Raw_Tag_List2").select2();
//$("#Source_Tag_List").select2();
$("#Is_Cloud_Totalizer").change(function () {
if (this.checked) {
$("#oncloud_totalizer").show();
$("#onPrem_totalizer").hide();
}
else {
$("#onPrem_totalizer").show();
$("#oncloud_totalizer").hide();
}
});
});
</script>
[HttpGet]
公共行动结果CreateNewTotalizerTag()
{
//这是原始标签列表
var RawTaglist1=cRTu.RawTagsList();
ViewBag.RawTaglist1=新的选择列表(RawTaglist1,“真实标签Id”,“R标签名称”);
//这是原始标签列表
var RawTaglist2=cRTu.RawTagsList();
ViewBag.RawTaglist2=新的选择列表(RawTaglist2,“真实标签Id”,“R标签名称”);
返回视图();
}
[HttpPost]
公共操作结果CreateNewTotalizerTag(RawTagVM RawTagVM)
{
//这是原始标签列表
var RawTaglist1=cRTu.RawTagsList();
ViewBag.RawTaglist1=新的选择列表(RawTaglist1,“真实标签Id”,“R标签名称”);
//这是原始标签列表
var RawTaglist2=cRTu.RawTagsList();
ViewBag.RawTaglist2=新的选择列表(RawTaglist2,“真实标签Id”,“R标签名称”);
返回重定向到操作(“TotalizerTagsList”);
}
//看法
@使用(Html.BeginForm(“CreateNewTotalizerTag”、“TotalizerTags”、FormMethod.Post))
{
@Html.HiddenFor(x=>x.Real\u Tag\u Id)
创建累加器标记
@CheckBoxFor(m=>m.Is_Cloud_累加器,新的{@class=“custom control input”,id=“Is_Cloud_累加器”})
是云累加器吗?
输入标记名
@EditorFor(m=>m.R_Tag_Name,new{htmlAttributes=new{@class=“form control”})
@*@Html.ValidationMessageFor(model=>model.R_Tag_Name,“,new{@class=“text danger”})*@
选择原始标记
@Html.DropDownListFor(m=>m.Real\u Tag\u Id\u Cloud,(IEnumerable)ViewBag.RawTaglist1,“选择原始标记”,新建{@class=“form control”,Id=“Raw\u Tag\u List1”,name=“Raw\u Tag\u List1”})
选择原始标记
@Html.DropDownListFor(m=>m.Real_Tag_Id,(IEnumerable)ViewBag.RawTaglist2,“选择原始标记”,新建{@class=“form control”,Id=“Raw_Tag_List2”,name=“Raw_Tag_List2”})
创建累加器
}
$(文档).ready(函数(){
//初始化select2
//$(“原始标签列表1”)。选择2();
//$(“原始标签列表2”)。选择2();
//$(“源标记列表”)。选择2();
$(“#是_云_积算器”)。更改(函数(){
如果(选中此项){
$(“#oncloud_累加器”).show();
$(“#onPrem_累加器”).hide();
}
否则{
$(“#onPrem_累加器”).show();
$(“#oncloud_累加器”).hide();
}
});
});
如果您随后执行重定向操作(或任何类型的重定向),则在视图包中放入任何内容都没有意义
ViewBag
用于控制器将数据传递到自己的视图。将响应发送到浏览器后,ViewBag
将丢失,并在下一次请求时创建一个新的响应
重定向将向浏览器发送响应,告知其请求所选端点
因此,在返回重定向之前设置的任何ViewBag
数据都将丢失。重定向之后,我不需要ViewBag。我的问题是,我正在将dropdownlist绑定到模型,但模型中的值为0。那么,为什么此时将数据放入ViewBag
?如果问题不在CreateNewTotalizerTag
中,则不显示代码-它仅显示ditratcs。另外,请指明要显示的视图的名称。ViewBag.RawTaglist1和另一个是ViewBag.RawTaglist2都与视图页面中的下拉列表绑定。但当我选择其中任何一个并提交表单时,它会返回o作为一个值。您没有显示该代码。提交表单后,您不会在服务器上显示任何读取表单的尝试。如果正在填充下拉选项(正如您所暗示的),那么问题与ViewBag