Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC3按钮单击以填充html表格并删除个人文章_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC3按钮单击以填充html表格并删除个人文章

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模式的概念 我的控制器代码:

我是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);                
        }
    
    }