Asp.net mvc 3 MVC3按钮单击以填充html表格并删除个人文章
我是MVC3新手,正在努力完成我工作中的第一个小项目。我有一个HomeController,它有两个操作,Index()和GetData()。Index只返回Index视图。当索引页面加载时,我希望有一个html按钮或按钮类型的输入。单击此按钮时,我希望运行GetData操作,该操作基于linq查询选择一些数据并返回一个列表。然后在索引视图本身中,在我单击的按钮下方,我希望将列表填充到html表中……我假设使用foreach循环 这是行不通的,我想我显然误解了MVC模式的概念 我的控制器代码:Asp.net mvc 3 MVC3按钮单击以填充html表格并删除个人文章,asp.net-mvc-3,Asp.net Mvc 3,我是MVC3新手,正在努力完成我工作中的第一个小项目。我有一个HomeController,它有两个操作,Index()和GetData()。Index只返回Index视图。当索引页面加载时,我希望有一个html按钮或按钮类型的输入。单击此按钮时,我希望运行GetData操作,该操作基于linq查询选择一些数据并返回一个列表。然后在索引视图本身中,在我单击的按钮下方,我希望将列表填充到html表中……我假设使用foreach循环 这是行不通的,我想我显然误解了MVC模式的概念 我的控制器代码:
private ReferenceDataContext data = new ReferenceDataContext();
public ActionResult Index()
{
return View();
}
public ActionResult GetData()
{
using (data)
{
var hosp = (from x in data.Hospitals
where x.HAcode == "Q36"
select x).ToList();
ViewData["hosp"] = hosp;
return RedirectToAction("Index");
}
}
我的视图代码:
@model IEnumerable<NursingHomes.Models.Hospitals>
@{
ViewBag.Title = "Hospitals Verify";
}
<br />
<br />
@using (Html.BeginForm("GetData", "Home"))
{
<input type="submit" value="Submit" title="Get Data" />
<h2>Nursing Homes</h2>
<table>
<tr>
<th>Code</th>
<th>HAcode</th>
<th>Name</th>
</tr>
@foreach (NursingHomes.Models.Hospitals item in (List<NursingHomes.Models.Hospitals>) ViewData["hosp"])
{
<tr>
<td>
@Html.DisplayFor(modelItem=>item.Code)
</td>
<td>
@Html.DisplayFor(modelItem=>item.HAcode)
</td>
<td>
@Html.DisplayFor(modelItem=>item.Name)
</td>
</tr>
}
</table>
}
@model IEnumerable
@{
ViewBag.Title=“医院验证”;
}
@使用(Html.BeginForm(“GetData”,“Home”))
{
养老院
代码
哈科德
名称
@foreach(列表)视图数据[“hosp”]中的NursingHomes.Models.Hospitals项目)
{
@DisplayFor(modeleItem=>item.Code)
@DisplayFor(modelItem=>item.HAcode)
@DisplayFor(modelItem=>item.Name)
}
}
我做错了上面的事?如果不使用JQuery,这是不可能的吗
基本问题是,如何在索引页上单击该按钮,并告诉它运行GetData操作,然后使用GetData操作返回的列表在按钮下方构建表。尝试从Get Data操作返回视图,如下所示:
return View("Index",YourModelObject);
public ActionResult Index()
{
if (Request.HttpMethod.ToLower().Equals("get"))
{
return View();
}
else
{
using (data)
{
var hosp = (from x in data.Hospitals
where x.HAcode == "Q36"
select x).ToList();
return View(hosp);
}
}
}
您可以在视图中使用此模型,如下所示:
...
<table>
<tr>
<th>Code</th>
<th>HAcode</th>
<th>Name</th>
</tr>
If(Model !=null)
{
@foreach (NursingHomes.Models.Hospitals item in Model)
{
<tr>
<td>
.....
在您的视图中,应该删除操作名称和控制器名称参数
@using (Html.BeginForm("GetData", "Home"))
{
<input type="submit" value="Submit" title="Get Data" />
.....
@使用(Html.BeginForm(“GetData”,“Home”))
{
.....
希望这有帮助。您需要按如下方式分离代码:
@{
ViewBag.Title = "Hospitals Verify";
}
@using (Html.BeginForm("GetData", "Home"))
{
<input type="submit" value="Submit" title="Get Data" />
}
如果您想将其提升到下一个级别,可以将GetData放在部分视图中,并通过ajax进行检索,这样页面就不会重新加载。您好,谢谢您的回复。我尝试了您的建议,我得到了指向“foreach”的“Object Ref not set to instance of a Object”循环。我不希望在页面加载时填充表,但只希望在单击GetData按钮时填充表。再次感谢Shello,我包含了您上面显示的If语句,它起了作用。我的错误是我最初没有包含它。因此,非常感谢您的帮助。非常感谢。尽管按钮起作用,但只有一个问题并且正确地显示列表,地址栏显示/home/getdata…我如何才能让它显示just/home。这可能吗?非常感谢。这正是我想要的。尽管可能还有其他更好的方法来实现我正在尝试的操作,例如在单击提交按钮时使用JQery ajax填充html表中的数据,现在这对我来说很好…………但是,你怎么能用jquery ajax来填写表格呢?我不禁想知道这是否是一个更好的解决方案?你也可以用jquery来做这件事……这样做我们有一些优势,比如不需要回发页面。谢谢你的回复。你的意思是我不需要回发页面吗ed为GetData操作创建单独的视图?我正在尝试避免这种情况。您也提到了返回模型。如果我返回模型,这意味着我将不会得到仅被重新引用为Q36代码的模型…是吗?我只需要从模型返回Q36受限数据集。我是否遗漏了什么?谢谢不必将它们放在单独的视图中,但这样做似乎更简洁。不确定Q36代码指的是什么…尽管数据模型返回Hospitals表中的所有行,正如您在GetData代码中看到的那样…我声明“var hosp”仅返回Hospitals表中“code=Q36”的记录.您提到要归还模型,但我最好是重新运行“hosp”列表。希望我说的有道理。谢谢是的,很抱歉我返回的是数据而不是hosp。返回hosp。嗨,Chad,谢谢你在上面的帮助。我很感激。我终于按照我的要求完成了。你提到我可以用Ajax来完成。你能给我一些建议或者告诉我如何通过j调用GetData的正确方向吗查询ajax并通过ajax?在索引视图中填充表。谢谢。
@model IEnumerable<NursingHomes.Models.Hospitals>
@{
ViewBag.Title = "Hospitals Verify";
}
@using (Html.BeginForm("GetData", "Home"))
{
<input type="submit" value="Submit" title="Get Data" />
}
<h2>Nursing Homes</h2>
<table>
<tr>
<th>Code</th>
<th>HAcode</th>
<th>Name</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem=>item.Code)
</td>
<td>
@Html.DisplayFor(modelItem=>item.HAcode)
</td>
<td>
@Html.DisplayFor(modelItem=>item.Name)
</td>
</tr>
}
</table>
public ActionResult Index()
{
return View();
}
public ActionResult GetData()
{
using (data)
{
var hosp = (from x in data.Hospitals
where x.HAcode == "Q36"
select x).ToList();
return View(hosp);
}
}