【发布时间】:2019-02-19 19:48:36
【问题描述】:
我正在尝试获取从控制器传递到视图的数据。我相信我真的很接近,但我错过了一些小片段。
控制器:
namespace ePolicy.ConsumerPortal.Controllers
{
[HandleErrors]
public class TwoFAController : BaseController
{
[AcceptVerbs(new string[1] { "GET" })]
public ActionResult SMS(string supplierId)
{
var model = new _2FASMSModel();
return View("TwoFA_sms", model);
}
[AcceptVerbs(new string[1] { "POST" }), ValidateInput(false)]
public ActionResult Initiate(FormCollection formValues, string email, string phone, string method)
{
return RedirectToAction("SMS", "TwoFA", new { phone = "1234567890"})
}
}
}
模型类:
public class _2FASMSModel : BaseModel
{
public string Phone { get; set; }
public _2FASMSModel()
{
}
}
视图(.aspx 文件)
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/ConsumerPortalNew.Master" Inherits="System.Web.Mvc.ViewPage<ePolicy.ConsumerPortal.Models._2FASMSModel>" Debug="true" %>
<%@ Import Namespace="ePolicy.Resources" %>
<%@ Import Namespace="ePolicy.Shared.Enumeration" %>
<%@ Import Namespace="System.Web" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
</asp:Content>
<asp:Content ID="login" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" src="<%: Url.StaticFile("/Scripts/TwoFA.js")%>"></script>
<div>
<p>@Model.Phone</p>
</div>
</asp:Content>
我想做什么:我想在我的视图文件中显示字符串“1234567890”。
我的尝试:我能够将“1234567890”作为 URL 参数的一部分,但是我无法检索此字符串,因此我可以在我的视图中显示。
@Model.Phone 将被解释为文字字符串,而不是我想要的值(“1234567890”)。
我还尝试通过添加此行来使用ViewBag
ViewBag.Phone = supplierID
在返回视图之前。并在视图中调用它:
<p>ViewBag.Phone</p>
它也没有工作。
感谢任何帮助。
【问题讨论】:
-
当 MVC 的流行(和 IMO 远远优于)视图引擎是 Razor 时,您使用 ASPX 是否有特殊原因?
-
@mason 我对此没有发言权。这是我(作为实习生)想从事的现有项目。
-
哎哟。好吧,我向你表示哀悼。我希望您不要继续认为 ASPX(Web 窗体视图引擎)代表了整个框架的质量。它变得更好。
-
@mason 这真的很高兴听到。我真的不喜欢 ASPX。很高兴听到有更好的选择。
-
将 public ActionResult SMS(string supplierId) 更改为 public ActionResult SMS(string phone) 并在返回之前执行 var model = new _2FASMSModel() {Phone = phone}
标签: c# asp.net asp.net-mvc