[英]pass value from a Webform button click to a MVC Area in a single solution
我只需要针对此问题的正确方法和解决方案。 我有一个带有WebForms的Web应用程序,最近我将MVC区域添加到了相同的解决方案中。 我想要的是从WebForms传递值以在MVC区域中进行访问。 我在网络表单中有一个按钮
<asp:Button ID="Button1" runat="server" Text="Button" onclick="location.href='@Url.Action("Index", "Home")?id=' + $('#Button1').val()" />
单击Button1时,我想重定向到MVC控制器并在MVC上显示参数值。查看MVC区域:-NewSampleMVCArea / Home / Index
@{
ViewBag.Title = "Index";
}
<label>@Html.Action("GetNewParameter", "Home")</label>
然后,Action方法如下所示
public ActionResult GetNewParameter(string Year)
{
string getId = Year;
return View(getId);
}
如果我想在<label></label>
显示Year的值怎么办
按照WebForms的传统,您可以处理回发事件中的click
:
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("NewSampleMVCArea/Home/Index");
}
根据更新,这可以做得更多:
protected void Button1_Click(object sender, EventArgs e)
{
var id = Button1.ClientID;
Response.Redirect("NewSampleMVCArea/Home/Index/" + id);
}
HomeController
将有2个动作:
public class HomeController : Controller
{
// GET: Home
public ActionResult Index(string id)
{
ViewBag.Year = id;
return View();
}
public ActionResult GetNewParameter(string Year)
{
string getId = Year;
dynamic model = new ExpandoObject();
model.getId = getId;
return PartialView(model);
}
}
各自的观点是:
@{
ViewBag.Title = "Index";
}
<label>@Html.Action("GetNewParameter", new { Year = ViewBag.Year })</label>
和
@Model.getId
通过查询字符串传递它,并使用MVC中的模型绑定器。
使用Response.Redirect("NewSampleMVCArea/Home/Index/?val="+ val.ToString());
从您的Web窗体应用中。 然后将参数添加到您的操作中:
protected void Button1_Click(object sender, EventArgs e)
{
var val = Button1.val(); // or whatever value you want
Response.Redirect("NewSampleMVCArea/Home/Index/?val="+ val.ToString());
}
public ActionResult Index(string val)
{
// use val here
return View(); //returns .cshtml view
}
要在视图中显示它,请使用@ Html.DisplayFor(m => m.val),其中val是模型中的属性。 了解一些ASP.NET MVC教程,以获取有关如何将数据绑定到模型/视图模型的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.