我正在尝试从控制器传递数据以进行查看。我相信我真的很近,但是我缺少一些细小的东西。
控制器:
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>
它也不起作用。
感谢您的帮助。
答案 0 :(得分:1)
我相信您需要更改:
<p>@Model.Phone</p>
收件人:
<p><%: Model.Phone %></p>
别忘了用数据实际填充模型:
[AcceptVerbs(new string[1] { "GET" })]
public ActionResult SMS(string supplierId)
{
var model = new _2FASMSModel() { Phone = "HTC 10" };
return View("TwoFA_sms", model);
}
那至少应该在您的视图上显示一些动态数据。最后一步是将数据从一个控制器动作传递给另一个控制器动作。在ASP.NET MVC中,可以使用控制器上的TempData
属性。这是一个字典,您可以在其中存储一些数据,这些数据将在下一个请求中提供。似乎正是您想要的。
[AcceptVerbs(new string[1] { "GET" })]
public ActionResult SMS(string supplierId)
{
var model = new _2FASMSModel() { Phone = TempData["Phone"] as string };
return View("TwoFA_sms", model);
}
[AcceptVerbs(new string[1] { "POST" }), ValidateInput(false)]
public ActionResult Initiate(FormCollection formValues, string email, string phone, string method)
{
TempData["Phone"] = "1234567890";
return RedirectToAction("SMS", "TwoFA");
}
答案 1 :(得分:0)
[AcceptVerbs(new string[1] { "GET" })]
公共ActionResult SMS(字符串SupplierId){ var model = new _2FASMSModel();
model.Phone =“ 1234567890”;
return View(“ TwoFA_sms”,model); }
查看
@ Html.LabelFor(model => model.Phone,htmlAttributes:new {@class =“ control-label col-md-2”}) @ Html.EditorFor(model => model.Phone,新的{htmlAttributes =新的{@class =“ form-control”}}) @ Html.ValidationMessageFor(model => model.Phone,“”,新的{@class =“ text-danger”})