【问题标题】:How to add logic to a User View Control in MVC 3?如何在 MVC 3 中向用户视图控件添加逻辑?
【发布时间】:2011-01-26 22:50:40
【问题描述】:

User View Control 没有代码隐藏。那么,我应该在哪里/如何制作元素的events

我想了解MVC中一个控件的逻辑...

【问题讨论】:

  • 我开始学习asp.net mvc,我可能太依赖Web Forms...我不知道应该搜索什么来学习如何在MVC上进行控件。一些有关它的文档的链接会很好......

标签: c# asp.net-mvc asp.net-mvc-3 viewusercontrol


【解决方案1】:

MVC 中没有用户控件,因此您不必担心控件的逻辑。 MVC 中没有 PostBacks。 MVC 中没有 ViewState。 MVC 中没有事件。

有型号:

public class MyViewModel
{
    public string Name { get; set; }
}

操纵模型的控制器:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel
        {
            Name = "John"
        });
    }
}

和视图渲染模型中包含的数据:

@model AppName.Models.MyViewModel
<div>@Model.Name</div>

当视图需要向控制器调用某些内容时,它们不再使用任何 PostBacks 或事件:它们使用标准的 HTML 工件,例如用于发送 GET 请求的锚链接和用于发送 POST 请求的表单。

例子:

@Html.ActionLink("click me", "Foo", new { param = "123" })

将生成指向 Foo 控制器操作的锚链接,并将 param=123 作为查询字符串参数传递:

<a href="/home/foo?param=123">click me</a>

以及以下内容:

@using (Html.BeginForm("Foo", "Home"))
{
    @Html.TextBoxFor(x => x.Name)
    <input type="submit" value="OK">
}

会生成一个 HTML 表单,允许您向 Foo 控制器操作 POST 一些信息:

<form action="/Home/Foo" method="post">
    <input type="text" id="Name" name="Name" value="" />
    <input type="submit" value="OK" />
</form>

包含许多学习 ASP.NET MVC 的教程和视频的有用资源:

【讨论】:

    【解决方案2】:

    个人 id 在控制器中执行逻辑或让控制器调用为您完成工作的业务逻辑类。然后控制器将返回视图。将模型从控制器传递到您的视图,然后将模型从视图传递到局部视图(MVC 等效于用户控件)

    这意味着视图/局部视图中没有逻辑,这意味着您可以以非常干净的方式渲染模型

    这有意义吗?

    【讨论】:

      【解决方案3】:

      您似乎过于依赖 WebForms 页面生命周期。

      MVC 表面上的编程方法与 WebForms 根本不同。它更类似于 Ruby On Rails。

      可以帮助您学习 MVC 的一些资源是:

      Official MVC Web site

      Scott Hanselman's NerdDinner project

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        我还会推荐 Scott Hanselman 的 NerdDinner 项目。它是学习 ASP.NET MVC 框架的好项目。

        还阅读并重新阅读 Darin Dimitrov 的答案。它包含 MVC 中如何处理数据的基础知识

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-02
          • 1970-01-01
          • 2014-03-18
          相关资源
          最近更新 更多