我有该文件夹中“ .INX”类型的特定文件的列表。当用户单击“运行选定的对象”时,对于选定的文件,将对该文件执行某些操作,并在进度栏中显示操作的进度,因为每个操作将花费近8个小时以上。
但是,当单击“ 运行选定的”时,在ViewModel中, ScenarioList 的ICollection在提交表单时始终为空。我在这里提到了类似的问题,但没有一个有帮助。
这是代码。
数据模型
public class INX
{
public int INXId { get; set; }
[DisplayName("INX Path")]
public string INXPath { get; set; }
public bool Selected { get; set; }
}
查看模型
public class vmINX
{
public ICollection<INX> ScenarioList { get; set; }
}
控制器
public class INXController : Controller
{
// GET: INX
[HttpGet]
public ActionResult Index()
{
return View(GetFileList());
}
[HttpPost]
public ActionResult Run([Bind(Include = "INX")]vmINX viewModel)
{
foreach (INX modelItem in viewModel.ScenarioList)
{
if (modelItem.Selected)
{
//Do Something for selected scenarion
}
}
return View(viewModel);
}
public vmINX GetFileList()
{
ViewModel.vmINX model = new vmINX();
model.ScenarioList = new List<INX>();
//This is just a temporary implementation
string[] fileList = Directory.GetFiles(@"<Network Folder Path>");
int id = 1;
foreach (string file in fileList)
{
INX item = new INX();
if (file.Substring(file.Length - 3).ToLower() == "inx")
{
item.INXId = id;
item.INXPath = file;
model.ScenarioList.Add(item);
}
id++;
}
return model;
}
查看
@model Ancon3.ViewModel.vmINX
@using (Html.BeginForm("Run", "INX", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table class="table">
<tr>
<th>
INX Path
</th>
<th>Progress</th>
<th></th>
</tr>
@foreach (var item in Model.ScenarioList)
{
string progressId = "progress" + item.INXId;
string paragraphId = "progressBarPercentage" + item.INXId;
string runId = "run" + item.INXId;
<tr>
<td>
@Html.DisplayFor(modelItem => item.INXPath)
</td>
<td>
<div id="result" style="float:left;">
<div id="ProgressStripe" class="progress progress-striped active" style="position:relative; min-width:100px; float:left;">
<div id=@progressId class="progress-bar progress-bar-info" style="float:left;"></div>
</div>
<span id=@paragraphId style="float:left; min-width:45px;"></span>
</div>
</td>
<td>@Html.CheckBoxFor(modelItem => item.Selected)</td>
</tr>
}
</table>
<div class="col-md-10">
<input type="submit" value="Run selected" class="btn btn-default" />
</div>
}
在Run方法中,ScenarioList始终为null。我不确定自己在做什么错。任何帮助将不胜感激。