gpt4 book ai didi

c# - 通过 WebService 调用访问页面的模型

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:34 25 4
gpt4 key购买 nike

我已经创建了一个 MVC 4 应用程序。在那里我有一些意见。这些 View 中的每一个都用于在浏览器中显示或作为电子邮件的正文。

作为电子邮件的正文是主要目的,但我添加了一个链接以在浏览器中显示正文。

我有一个 Web 服务调用,它“浏览”到该页面并获取其来源并将其作为 HTML 应用到电子邮件正文中,然后我使用 System.Net.Mail。

现在,在 WebService 调用中,我需要访问所服务页面的模型的一些值。这可能吗?我是以完全错误的方式做的吗?你有什么建议吗?

页面和WebService都在同一个项目下。

更新我的实际问题是如何处理图像。我想嵌入它们(用于电子邮件)或提供链接(用于浏览器)。所以我的模型在\

中有图像
list<System.IO.Stream>

View 呈现部分 html,如下所示:

@model MyProject.Models.ImageTag
@if (@Model.ContentType == 2)
{
<img src="cid:@Model.ImageReference"border="0" alt="" />
}
else
{
<img src="http://www.mysite.com/images/@Model.PropertyId/@Model.Photo" border="0" alt="" />
}

Web 服务需要“知道”图像才能将它们添加到 LinkedResources 中:

foreach (MyProject.Models.Images image in Model.Images)
{
LinkedResource lr = new LinkedResource(image.image, "image/jpeg");
lr.ContentId = image.Name;
lr.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
lrc.Add(lr);
}

上面的方法当然行不通,因为没有模型。所以这是我的问题。

Model.Images 是一个

List<Img>

img 在哪里

public class Img
{
public string Name { get; set; }
public System.IO.Stream image {get;set;}
}

最佳答案

是的,我会说你做错了。 View 的目的是将模型的数据呈现为您需要的任何表示形式:电子邮件的内容,格式化的单独值,例如。作为 json 或纯文本,或两者兼而有之。

从同一 View 返回不同类型的信息有多种选择:

  • 你可以返回一个多部分的 HTTP 响应,这在客户端处理起来有点棘手,但你可以通过同一个调用获得两种类型的内容
  • 如果存在可选的查询参数,您可以返回值,例如 Json,而不是 HTML View 。您将需要两个单独的调用来返回两个响应。
  • 您可以创建一个单独的 View 来返回额外的数据
  • 您可以将额外数据作为 HTTP header 返回

以某种方式在 HTML 中添加数据并不是一个好主意。除非您希望收件人也收到数据,否则您必须在发送电子邮件之前将其从返回的 HTML 中删除。

如果我只想返回 2-3 个不需要复杂处理的小值,我会从第 4 个选项开始,否则我会创建两个单独的 View 。

如果不同的场景需要这些值,即不是为了准备电子邮件,我肯定会创建一个不同的 View 和一个只返回我需要的值的模型。

关于c# - 通过 WebService 调用访问页面的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18374363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com