在我的旧应用程序中,我使用Default.aspx作为我的ui-router的布局页面。在页面底部是:
<form runat="server" style="visibility: collapse">
<asp:HiddenField ID="mkt" runat="server" />
<asp:HiddenField ID="id" runat="server" />
</form>
在我的角度服务中,我带着
的值 var market = (angular.element('#mkt').val() == '' ? this.marketAbbreviation : angular.element('#mkt').val());
var id = (angular.element('#id').val() == '' ? this.sessionGuid : angular.element('#id').val());
两者都是在模态启动时从地图应用程序传递的字符串值。我已经完成了搜索,这似乎是一个常见的问题。这就是我想要的工作。
Index.cshtml
@model SubjectProperty.Web.Controllers.MKT
@Html.HiddenFor(x => x.mkt, new { htmlAttributes = new { @id = "mkt" } })
@Html.HiddenFor(x => x.id, new { htmlAttributes = new { @id = "id" } })
在我的家庭控制器中
public class MKT
{
public string mkt { get; set; }
public string id { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index(MKT m)
{
if (m == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var model = new MKT();
model.id = m.id;
model.mkt = m.mkt;
return View(model);
}
}
现在我手动插入
本地主机:1323 / MKT =湿和ID = dd23e460-e319-47c9-b9c4-rr5r6798e56t
它拾起并起作用。我需要做什么?
答案 0 :(得分:1)
尝试将隐藏的表单字段包装在表单中:
using(Html.BeginForm()
{
@Html.HiddenFor(x => x.mkt, new { htmlAttributes = new { @id = "mkt" } })
@Html.HiddenFor(x => x.id, new { htmlAttributes = new { @id = "id" } })
}
并使用[HttpPost]属性标记您的方法:
[HttpPost]
public ActionResult Index(MKT model)
{
}
如果您想使用更高级的方案,请考虑自定义模型绑定器。
答案 1 :(得分:1)
将HiddenFor内容包含在某种形式(HTML,Ajax ...)中,并在控制器方法的签名中获取表单元素集合,如:public ActionResult Index(FormCollection _collection)
使用[AcceptVerbs(HttpVerbs.Post)]