是否有可能从不是索引的控制器方法返回视图
本文关键字:控制器 方法 返回 视图 索引 有可能 是否 | 更新日期: 2023-09-27 18:03:35
我目前正在开始使用MVC,但我似乎无法操纵我的视图与我的控制器,如果我不使用…
public ActionResult Index() {
return View();
}
当我使用一个不是Index()的函数来尝试更新时,似乎页面根本没有改变。实际上,页面似乎会进入所有预期的控制器和部分视图调用,但随后无论如何只是加载默认页面。我想我在表达观点的方式上做错了什么。
下面是我当前的进程:
创建带有控件的视图。我希望用户输入搜索数据,单击搜索按钮,然后开始查询以检索结果。检索结果将显示在web网格中。
<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" type="submit" onclick="patientOneSearch()"
title="Search">
Search
</button>
</fieldset>
@if (Model != null && Model.Count() > 0)
{
Html.RenderPartial("PatientOneSearch");
}
</div>
我的模型:
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; }
}
}
我的AJAX得到我的控制器的查询:
public PartialViewResult GetPatientOneSearch(string fname, string lname, string dob)
{
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 PartialView("PatientOneSearch", patientList);
}
catch (Exception ex)
{
Logger.Log.Error(ex.Message + ex.StackTrace + ex.InnerException);
//return Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet);
return PartialView("PatientOneSearch", null);
}
}
然后转到我的局部视图…
@model IEnumerable<myNameSpace.Repository.Model.PatientMerge>
<div id="grdPatientOneSearch">
@if (Model != null && Model.Count() > 0)
{
var grid = new WebGrid(Model);
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")
)
);
}
else
{
<label>No records found.</label>
}
aaaaaaa和没有显示在我的浏览器。事实上,通过我所做的所有测试,我发誓它只返回默认视图。它实际上没有击中我的return View();但从过去两天我尝试做的所有测试来看,我发誓这一定是正在发生的事情。
我在如何更新我的视图中做错了什么吗?
我再回答一下为什么不直接将html设置为
<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" type="submit" onclick="patientOneSearch()"
title="Search">
Search
</button>
</fieldset>
@if (Model != null && Model.Count() > 0)
{
<div id="patientSearchPartial">
</div>
}
</div>
在你的JS代码中
GetAjax('PatientMerge/GetPatientOneSearch', 'json', { 'fname': fname, 'lname': lname, 'dob': dob }, function (data) {
$('#patientSearchPartial').html(data);
} )
因为你的部分视图的动作结果返回html为什么不使用jquery填充html返回的div现在它会击中你的局部视图并用来自控制器
我建议获得更多的知识与mvc,但你可以从你的控制器做任何事情。使用控制器代码
public ActionResult Index() {
return View();
}
这只是控制器在查找Index视图时运行的动作。如果你想点击blah视图你可以这样写:
public ActionResult Blah() {
return View();
}
如果你想让你的Index动作带你到视图它也可以这样做
public ActionResult Index() {
//Do some code and grab MyModel
return View("Blah", MyModel);
}
这里它会在Index动作被调用时击中Blah视图因为它不是告诉它返回 view ()(它只是返回与动作结果同名的视图)而是告诉它返回一个不同的视图和模型
也可以是
public ActionResult Index() {
return RedirectToAction("Blah")
}
将重定向到Blah操作结果
我最终采用了代码理论的方法。真的,通过这次讨论,我能够更好地形成我的问题,并找到我需要的资源来掌握部分视图是如何呈现的。
$.post(url, { 'fname': fname, 'lname': lname, 'dob': dob, patientNumber: 1 })
.done(function (response) {
$("#grdPatientTwoSearch").html(response);
});
部分视图将调用你的控制器(必须从脚本调用),控制器将返回HTML到你的脚本。然后,您需要将响应绑定到web页面,类似于我上面所做的。
我用这个资源来帮助自己理解:
https://www.simple-talk.com/dotnet/asp.net/revisiting-partial-view-rendering-in-asp.net-mvc/