我有一個名爲CreateBoard的控制器,它插入會話並顯示數據庫中創建的所有會話。我發佈的這個版本沒有問題,沒關係,在問題中顯示它。將空列表從控制器傳遞到控制器asp.net mvc
[HttpGet]
public ActionResult CreateBoard(IEnumerable<BMModel> search)
{
if (search != null)
{
ViewData["Boards"] = search;
return View();
}
var db = new BoardMeetingEntities();
var AllBoards = from p in db.tBoardMeetings
select new BMModel
{
Absent = p.Absent,
Attendent = p.Attendent,
BMDate = p.BMDate,
BMNo = p.BMNo.ToString(),
EndTime = p.EndTime,
StartTime = p.StartTime,
MPlace = p.MPlace,
IsFinal = p.IsFinal
};
ViewData["Boards"] = AllBoards;
return View();
}
public ActionResult SearchBoard(FormCollection form)
{
string bmno = form["BMNo"].ToString();
string bmdate = form["BMDate"].ToString();
string mplace = form["MPlace"].ToString();
if (bmno == string.Empty && bmdate == string.Empty && mplace == string.Empty)
{
return RedirectToAction("CreateBoard");
}
else
{
var db = new BoardMeetingEntities();
var query = from p in db.tBoardMeetings
where p.BMNo.ToString() == bmno || p.BMDate.ToString() == bmdate || p.MPlace == mplace
select new BMModel
{
Absent = p.Absent,
Attendent = p.Attendent,
BMDate = p.BMDate,
BMNo = p.BMNo.ToString(),
EndTime = p.EndTime,
StartTime = p.StartTime,
MPlace = p.MPlace,
IsFinal = p.IsFinal
};
IEnumerable<BMModel> q = query.ToList();
return RedirectToAction("CreateBoard", new { search = q });
}
}
這是我的看法:
@model MetronicTemplate.Models.BMModel
@{
ViewBag.Title = "BoardMeeting";
IEnumerable<MetronicTemplate.Models.BMModel> list = ViewData["Boards"] as IEnumerable<MetronicTemplate.Models.BMModel>;
}
<div class="tab-content">
<div class="tab-pane active" id="tab_1">
<div class="portlet box blue">
<div class="portlet-title">
<div class="caption"><i class="icon-reorder"></i> sessions</div>
<div class="tools">
<a href="javascript:;" class="collapse"></a>
<a href="#portlet-config" data-toggle="modal" class="config"></a>
<a href="javascript:;" class="reload"></a>
<a href="javascript:;" class="remove"></a>
</div>
</div>
<div class="portlet-body form">
@using (Html.BeginForm())
{
if (ViewData["Success"] != null)
{
<div class="alert alert-success fade in alert-dismissable" role="alert">
<p href="#" class="alert-link" data-dissmiss="alert">@ViewData["Success"].ToString()
</div>
}
@Html.ValidationSummary(true, "", new { @class = "alert-danger fade in alert-dismissable", role = "alert" })
<h3 class="form-section">
insert session
</h3>
<div class="row-fluid">
<div class="span3 ">
<div class="control-group">
<label class="control-label">session number</label>
<div class="controls">
@Html.TextBoxFor(m => m.BMNo, "", new { @class = "m-wrap span12 medium", id ="BMNo" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.BMNo, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
<div class="span6 ">
<div class="control-group">
<label class="control-label">date </label>
<div class="controls">
@Html.TextBoxFor(m => m.BMDate, "", new { @class = "m-wrap span12 medium", id ="BMDate" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.BMDate, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span3 ">
<div class="control-group">
<label class="control-label">start session</label>
<div class="controls">
@Html.TextBoxFor(m => m.StartTime, "", new { @class = "m-wrap span12 medium", id ="BMStart" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.StartTime, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
<div class="span3 ">
<div class="control-group">
<label class="control-label">end of session </label>
<div class="controls">
@Html.TextBoxFor(m => m.EndTime, "", new { @class = "m-wrap span12 medium", id ="BMEnd" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.EndTime, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
<div class="span3 ">
<div class="control-group">
<label class="control-label">place of session </label>
<div class="controls">
@Html.TextBoxFor(m => m.MPlace, "", new { @class = "m-wrap span12", id ="BMPlace" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.MPlace, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span6 ">
<div class="control-group">
<label class="control-label">attendent</label>
<div class="controls">
@Html.TextBoxFor(m => m.Attendent, "", new { @class = "m-wrap span12", id ="BMPresent" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.Attendent, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
<div class="span6 ">
<div class="control-group">
<label class="control-label">absent </label>
<div class="controls">
@Html.TextBoxFor(m => m.Absent, "", new { @class = "m-wrap span12", id ="BMAbsent" })
</div>
<div class="controls text-error">
@Html.ValidationMessageFor(m => m.Absent, "", new { @class = "m-wrap span12" })
</div>
</div>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn blue"><i class="icon-ok"></i> insert</button>
<button type="button" class="btn" onclick="cancel()">cancel</button>
<button type="submit" class="btn" formaction="@Url.Action("SearchBoard","BoardMeeting")">search</button>
</div>
if (list != null)
{
<h3>the list</h3>
<table class="table table-striped table-hover table-bordered dataTable" id="sample_editable_1" aria-describedby="sample_editable_1_info" style="width:1000px;">
<thead>
<tr role="row">
<th class="sorting_disabled" role="columnheader" rowspan="1" colspan="1" style="width:5px;" aria-label="Username">sessoin no</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 15px;" aria-label="Full Name: activate to sort column ascending">session date</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 15px;" aria-label="Points: activate to sort column ascending"> session start</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 50px;" aria-label="Delete: activate to sort column ascending">end of session</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 75px;" aria-label="Edit: activate to sort column ascending">place of session</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 114px;" aria-label="Delete: activate to sort column ascending">attendent</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 114px;" aria-label="Delete: activate to sort column ascending">absent</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 114px;" aria-label="Delete: activate to sort column ascending">status</th>
<th class="sorting" role="columnheader" tabindex="0" aria-controls="sample_editable_1" rowspan="1" colspan="1" style="width: 50px;" aria-label="Delete: activate to sort column ascending"></th>
</tr>
</thead>
<tbody role="alert" aria-live="polite" aria-relevant="all">
@foreach (var item in list)
{
<tr class="odd">
<td class="center">@item.BMNo.ToString()</td>
<td class="center">@item.BMDate.ToString()</td>
<td class="center">@item.MPlace</td>
<td class="center">@item.StartTime</td>
<td class="center">@item.EndTime</td>
<td class="center">@item.Attendent</td>
<td class="center">@item.Absent</td>
<td class="center">
<span class="center">
<input class="checker" type="checkbox" readonly
@if (item.IsFinal) { @: checked
} />
</span>
</td>
<td class=" "><a class="center" href="@Url.Action("BMDetail", "BoardMeeting", new { id = @item.BMNo })">bmdetail</a></td>
<td class=" "><a class="center" href="@Url.Action("Agenda", "BoardMeeting", new { id = @item.BMNo })">bmorder</a></td>
<td class=" "><a class="center" href="@Url.Action("BMDetailActivity", "BoardMeeting", new { id = @item.BMNo, z = true })">session analyse</a></td>
<td class=" "><a class="center" href="@Url.Action("FinalizeBoard", "BoardMeeting", new { FID = @item.BMNo })">finalize</a></td>
<td class=" "><a class="edit" href="javascript:;">edit</a></td>
<td class=" "><a class="delete" href="javascript:;">delete</a></td>
</tr>
}
</tbody>
</table>
}
}
</div>
</div>
</div>
我的問題是,當我點擊搜索按鈕,它調用searchboard行動,它完美地查詢數據庫,但是當它重定向到createboard行動,該視圖在表中沒有顯示任何內容。我追蹤了代碼,發現在搜索板中的查詢沒有問題,但是當涉及到createboard操作時,搜索參數沒有任何價值。我錯過了什麼?
你只是不通過任何東西。你的'SearchBoard'方法應該是一個'search'參數? –
正如我寫的,搜索參數應該是IEnumerable和BMModel是我的應用程序中的一個模型。我只需要將此對象的集合傳遞給CreateBoard Action。 –
Hooman