【问题标题】:How would one go about to create or display an image from MVC Controller?如何从 MVC 控制器创建或显示图像?
【发布时间】:2017-04-08 10:53:59
【问题描述】:

我是 MVC 的新手,并试图弄清楚它是否有效。我只是在尝试一些简单的项目,还有一些不清楚的地方。

假设我想根据控制器中的值(来自检查按钮的真或假)加载图像。我从我的视图中接收值没有问题,但是我将如何生成这个 html 元素?

想到的一些想法是。

  • 在已渲染的图像元素上使用 IsVisible=false 属性,然后使用 CSS 更改该属性
  • 使用ViewBagViewController之间发送数据
  • 使用Html.Helper 创建“个性化”元素。

从控制器创建元素并将其传递给关于“最佳实践”的视图的方法是什么?

【问题讨论】:

  • 只需构建一个源字符串<img src="@Model.src"/>。除非您想从后端资源流式传输它?
  • 但是如果我想从控制器创建 html 怎么办?
  • 不要,你从不(大部分)在控制器中创建 HTML。视图作业正在渲染控制器作业是逻辑/路由
  • 啊,好吧,所以所有的 html 元素都需要在 View 代码中,否则我无法显示 E.G 图像?

标签: c# html asp.net-mvc asp.net-mvc-4 model-view-controller


【解决方案1】:

像这样构建它:

查看模型/模型

public class viewModel
{
    public string imgSrc {get; set;}
}

控制器

public class myController : Controller
{
    public ActionResult myAction()
    {
       bool switch;
       viewModel vm = new viewModel();
       if (switch)
            vm.Src = "something.jpg";
       else
            vm.Src = "somthingelse.jpg";
       return View(vm);
    }

}

剃须刀

@model viewMoel

<img src="@Model.Src"/>

MVC 基于关注点分离。阅读design pattern。人们常常认为 MVC 是一种技术,它不是,它是一种模式。

因此,它应该与正确的部件一起正确使用,以完成它们的设计目的。因此,仅仅因为您可以做某事,并不意味着您应该做某事。在 MVC 中,视图作业(关注)正在呈现内容。控制器应该不知道该内容。它的工作是模型的路由和生成。所以你所有的 HTML 都应该在视图中(句号)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2012-01-05
    • 1970-01-01
    • 2016-02-29
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多