Asp.net mvc 3 在MVC3中使用WebGrid

Asp.net mvc 3 在MVC3中使用WebGrid,asp.net-mvc-3,Asp.net Mvc 3,我是ASP.NET MVC3的新手,正在拼命尝试让一些简单的东西正常工作。我觉得我在尝试做一些非常简单的事情。然而,我无法使用基本网格。我在Visual Studio中使用默认设置,下面是我所做的: HomeController.cs public class HomeController : Controller { public ActionResult Index() { ViewBag.Message = "Welcome to ASP.NET MVC!"

我是ASP.NET MVC3的新手,正在拼命尝试让一些简单的东西正常工作。我觉得我在尝试做一些非常简单的事情。然而,我无法使用基本网格。我在Visual Studio中使用默认设置,下面是我所做的:

HomeController.cs

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        List<Person> test = new List<Person>();
        test.Add(new Person("John", "Smith"));
        test.Add(new Person("Bill", "Torr"));

        return View(test);
    }

    public ActionResult About()
    {
        return View();
    }
}

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public Person(string firstName, string lastName)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
    }
}
公共类HomeController:控制器
{
公共行动结果索引()
{
ViewBag.Message=“欢迎使用ASP.NET MVC!”;
列表测试=新列表();
测试。添加(新人(“约翰”、“史密斯”);
添加(新的人(“比尔”、“托尔”);
返回视图(测试);
}
关于()的公共行动结果
{
返回视图();
}
}
公共阶层人士
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公众人物(字符串名、字符串名)
{
this.FirstName=FirstName;
this.LastName=LastName;
}
}
Index.cshtml @{ ViewBag.Title=“主页”; }

@ViewBag.Message

@{
var grid=新的WebGrid(@Model);
GetHtml();
}


奇怪的是,WebGrid没有打印任何内容。我还以为是两排呢。相反,我什么都没有得到。我做错了什么?

您忘记了强式键入视图,并将
GetHtml
方法的结果输出到视图输出流。给你:

@model IEnumerable<Person>

<h2>@ViewBag.Message</h2>
@{
    var grid = new WebGrid(Model);
}

<p>@grid.GetHtml()</p>
@model IEnumerable
@查看包。留言
@{
var grid=新的WebGrid(模型);
}
@grid.GetHtml()


注意
@grid.GetHtml()
是如何从代码部分外部化的,代码部分基本上将网格HTML写入输出流。在您的示例中,您在代码部分内调用了
grid.GetHtml()
,但没有对结果执行任何操作,例如输出结果。这就是他们被遗忘的原因。

尝试一下这个演示如何在mvc3中使用webgrid和ajax

但我无法在.cshtml文件中引用Person。如果我尝试@model IEnumerable,也不会显示任何内容。@Villager,您当然可以引用它。只需提供它的完整名称空间
@model IEnumerable
。或者更好的是,将这个命名空间添加到<代码> ~/VIEW/Web.Web.CONFIG/<代码>文件的<代码> /COD>部分中,这样您就不必在所有视图中重新做一遍。“村民,很好,您还有什么要问的吗?或者我们可以认为这个线程是关闭的吗?在这种情况下,您应该毫不犹豫地标记答案吗?
@model IEnumerable<Person>

<h2>@ViewBag.Message</h2>
@{
    var grid = new WebGrid(Model);
}

<p>@grid.GetHtml()</p>