我的Create视图是这样的:
@model ContactProject.Models.Activity.Activity
@{
ViewBag.Title = "Create";
IEnumerable<ContactProject.Models.Activity.Activity> activities = ViewBag.Activities;
}
<div class="editor-label">
@Html.Label("Project")
</div>
<div class="editor-field">
@Html.DropDownList("Projects", ViewBag.Project as SelectList,"----Project----", new { id = "ProjectsID" })
@Html.ValidationMessageFor(model => model.iProjectID)
</div>
<div class="editor-label">
@Html.Label("Title")
</div>
<div class="editor-field" id="TitlesDivID">
<select id="TitlesID" name="Titles"></select>
</div>
// other codes...
if (activities !=null){
// Display activities.
}这是我的JS代码
$('#ProjectsID').change(function () {
var URL = 'TitleList';
$.getJSON(URL + '/' + $('#ProjectsID').val(), function (data) {
var items = '<option>Select a Title</option>';
$.each(data, function (i, title) {
items += "<option value='" + title.Value + "'>" + title.Text + "</option>";
if (items != null)
{
var addValue = $('#ProjectsID').val();
$.ajax
({
type: "POST",
url: "/Activity/getCreateActivities",
data: { projectID: addValue },
success: function (@ViewBag.Activities) {
}
})
}
}) 基本上,我想用这个JS实现我的函数,不仅显示与项目相关的标题,而且显示所有活动都有相同的项目名称。
这就是为什么我在jquery回调函数中写“成功:函数(@ViewBag.Activities)”的原因。
下面是我的控制器中的方法:
public ActionResult getCreateActivities(string projectID)
{
int iProjectID = Int32.Parse(projectID);
ViewBag.Project = GetProjects();
var Activities = (from a in db.Activities
where a.iProjectID == iProjectID
select a).ToList();
ViewBag.Activities = Activities;
return View("Create");
}但是当我使用断点进行调试时,会返回带有值和计数的@ViewBag.Activities,但似乎没有显示在我的屏幕上,有人对此有任何想法吗?如有任何贡献,将不胜感激。
更新:
<table>
@foreach (var item in Activities) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ProjectID)
</td>
<td>
@Html.DisplayFor(modelItem => item.Project.ProjectName)
</td>
</tr>发布于 2014-02-28 21:46:15
如果使用ajax请求在ViewBag中设置一些值,则不会得到它。处理此问题的常规方法是,以JSON格式返回数据并访问它。
public ActionResult getCreateActivities(string projectID)
{
int iProjectID = Int32.Parse(projectID);
var Activities = (from a in db.Activities
where a.iProjectID == iProjectID
select a).ToList();
return Json(new { Projects : GetProjects(),
Activities : Activities } ,JsonRequestBehaviour.AllowGet);
}上面的内容将返回一个匿名对象的JSON表示,如下所示
{
"Projects": [ { "Id": 2 } ],
"Activities": [ { "id": 113,"Name": "My name" } ]
}在ajax方法的成功回调中,访问它就像
success(function(data){
// now you can acceess data.Projects and data.Activities
}https://stackoverflow.com/questions/22106367
复制相似问题