我有一个指向页面的href
链接,该页面向该链接添加了一个参数,例如:
tsw/register-your-interest?Course=979
我想做的是提取Course
中的值,即979,并将其显示在view
中。尝试以下代码时,我仅返回0而不是预期的课程值。理想情况下,我想避免使用routes
。
这是视图:
<div class="contact" data-component="components/checkout">
@using (Html.BeginUmbracoForm<CourseEnquiryPageSurfaceController>("PostCourseEnquiryForm", FormMethod.Post, new { id = "checkout__form" }))
{
//@Html.ValidationSummary(false)
@Model.Course;
}
还有我的控制器:
public ActionResult CourseEnquiry(string Course)
{
var model = Mapper.Map<CourseEnquiryVM>(CurrentContent);
model.Course = Request.QueryString["Course"];
return model
}
这是视图模型:
public class CourseEnquiryVM : PageContentVM
{
public List<OfficeLocation> OfficeLocations { get; set; }
public string Test { get; set; }
public string Course { get; set; }
public List<Source> SourceTypes { get; set; }
}
解决方案: 经过一些研究和评论,我将代码调整为下面的代码,现在可以按预期检索值
@Html.HiddenFor(m => m.Course, new { Value = @HttpContext.Current.Request.QueryString["Course"]});
谢谢
答案 0 :(得分:1)
根据您提供的表单代码,您需要使用@Html.HiddenFor(m => m.Course)
而不是@Model.Course
。 @Model.Course
只是将值显示为文本,而不是构建将被发送回控制器的输入元素。
如果您的问题是上面引用的视图之前的链接,这是我期望的工作:
使用链接查看:
@model CourseEnquiryVM
@Html.ActionLink("MyLink","CourseEnquiry","CourseController", new {course = @Model.Course}, null)
CourseController:
public ActionResult CourseEnquiry(string course)
{
// course should have a value at this point
}
答案 1 :(得分:0)
在您看来,您仅显示Course
..的值,无法提交。您需要将当然的值与表单输入元素(文本框,复选框,文本区域,隐藏等)合并。
我强烈建议您使用EditorFor
或Textboxfor
,但是由于您的控制器操作仅需要一个string
参数,您可以只使用Editor
或TextBox
@using (Html.BeginUmbracoForm<CourseEnquiryPageSurfaceController>("PostCourseEnquiryForm", FormMethod.Post, new { id = "checkout__form" }))
{
//@Html.ValidationSummary(false)
@Html.TextBox(Model.Course, null, new { @class = "form-control"});
<input type="submit" value="Submit" />
}
然后您应该可以在控制器中执行此操作:
public ActionResult CourseEnquiry(string course) // parameter variables are camel-case
{
var model = Mapper.Map<CourseEnquiryVM>(CurrentContent);
if(!string.IsNullOrWhiteSpace(course))
model.Course = course;
return model;
}
让我知道这是否有帮助。