从URL获取查询参数到MVC视图

时间:2018-07-02 13:03:26

标签: c# asp.net-mvc umbraco

我有一个指向页面的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"]});

谢谢

2 个答案:

答案 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 ..的值,无法提交。您需要将当然的值与表单输入元素(文本框,复选框,文本区域,隐藏等)合并。

我强烈建议您使用EditorForTextboxfor,但是由于您的控制器操作仅需要一个string参数,您可以只使用EditorTextBox

@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;
 }

让我知道这是否有帮助。