【发布时间】:2015-10-07 17:26:40
【问题描述】:
通过实验,我发现我在 Index(默认)ActionResult 函数中执行的相同代码块会将数据绑定到我的网络网格,但如果我交换此代码并让它尝试通过我编写的自定义操作函数,网格未显示在我的渲染视图上。
我希望我的默认 Index() ActionResult 只返回网页而不进行任何特殊渲染。我希望我的 GetPatientOneSearch() ActionResult 返回我尝试绑定的 PatientList 并显示我的网络网格。
如前所述,如果我在 GetPatientOneSearch 中剪切并粘贴代码并将其放入我的 Index() 中,我将获得搜索结果。我不知道为什么会这样,但这可能是我不明白的关于 MVC 的事情。
查看:
@model IEnumerable<myNameSpace.Repository.Model.PatientMerge>
@{
ViewBag.Title = "myNameSpace";
}
@Scripts.Render(myNameSpace.Web.App.BundleConfig.GetVirtualPathForScript(myNameSpace.Web.App.BundleConfig.Scripts.PatientMerge))
@using System.Web.Helpers;
<div id="">
<h2>
Patient Merge
</h2>
<div class="container">
<div class="searchOneWrp">
<fieldset>
<legend><strong>Patient One Search</strong></legend>
First Name: <input type="text" id="fnamePone" />
Last Name: <input type="text" id="lnamePone" />
D.O.B.: <input type="text" id="dobPOne" />
<button class="patient_look_up_button" id="btnPOneSearch" name="btnPOneSearch" onclick="patientOneSearch()"
title="Search">
Search
</button>
</fieldset>
<div id="grdPatientOneSearch">
@{
if (ViewBag.Message != "Index")
{
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 15, selectionFieldName: "selectedRow", ajaxUpdateContainerId: "grdPatientOneSearch");
//grid.Bind(rowCount: 1, source: Model, autoSortAndPage: false);
grid.Pager(WebGridPagerModes.NextPrevious);
grid.GetHtml(tableStyle: "webgrid",
headerStyle: "header",
alternatingRowStyle: "alt",
selectedRowStyle: "select",
columns: grid.Columns(
grid.Column("pat_id", "Id"),
grid.Column("fname", "First Name"),
grid.Column("lname", "Last Name"),
grid.Column("birth_date", "dob")
));
}
}
</div>
</div>
<div class="searchTwoWrp">
<fieldset>
<legend><strong>Patient Two Search</strong></legend>
First Name: <input type="text" id="fnamePTwo" />
Last Name: <input type="text" id="lnamePTwo" />
D.O.B.: <input type="text" id="dobPTwo" />
<button class="patient_look_up_button" id="btnPTwoSearch" name="btnPTwoSearch"
title="Search">
Search
</button>
</fieldset>
</div>
</div>
</div>
控制器:
using myNameSpace.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace myNameSpace.Web.App.Controllers.Patient
{
public class PatientMergeController : Controller
{
//
// GET: /PatientMerge/
public ActionResult Index()
{
ViewBag.Message = "Index";
//List<myNameSpace.Repository.Model.PatientMerge> patientList = new List<myNameSpace.Repository.Model.PatientMerge>();
return View();
}
#region Search Function
public ActionResult GetPatientOneSearch(string fname, string lname, string dob)
{
ViewBag.Message = "";
try
{
var target = new PatientRepository();
var result = target.GetPatient(fname, lname, dob, "", "", "");
List<myNameSpace.Repository.Model.PatientMerge> patientList = new List<myNameSpace.Repository.Model.PatientMerge>();
for (int i = 0; i < result.Count; i++)
{
myNameSpace.Repository.Model.PatientMerge patient = new myNameSpace.Repository.Model.PatientMerge();
patient.pat_id = result[i].PatientId;
patient.fname = result[i].FirstName;
patient.lname = result[i].LastName;
patient.birth_date = result[i].DateOfBirth.ToString();
patientList.Add(patient);
}
return View("~/Views/PatientMerge", patientList);
}
catch (Exception ex)
{
Logger.Log.Error(ex.Message + ex.StackTrace + ex.InnerException);
//return Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet);
return View();
}
}
#endregion
}
}
型号:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace myNameSpace.Repository.Model
{
public class PatientMerge
{
public int pat_id { get; set; }
public string pag_status_cn { get; set; }
public string fname { get; set; }
public string lname { get; set; }
public string birth_date { get; set; }
public string AgeYears { get; set; }
public string gender_cd { get; set; }
public string phone_no { get; set; }
public string addr1 { get; set; }
public string addr2 { get; set; }
public string city { get; set; }
public string state_cd { get; set; }
}
}
JS调用控制器方法:
GetAjax('PatientMerge/GetPatientOneSearch', 'json', { 'fname': fname, 'lname': lname, 'dob': dob }, function (data) {
/*if (!data.success) {
customAlert("623", "Error");
}*/
});
【问题讨论】:
-
这是哪个视图?索引还是 PatientMerge?
-
@howcheng View is PatientMerge.cshtml
-
@Smak 你得到答案了吗?我遇到了同样的问题
-
@iamCR 自从我访问这个问题以来已经有一段时间了,但我相信我在一个单独的问题中更详细地重新发布了这个问题。我记得问题本身,但我不知道我是如何解决的。下面的链接是我唯一的历史记录:stackoverflow.com/questions/31620038/…
标签: c# asp.net-mvc razor webgrid