Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Html表单使用_C#_Asp.net Mvc_Controller - Fatal编程技术网

C# Html表单使用

C# Html表单使用,c#,asp.net-mvc,controller,C#,Asp.net Mvc,Controller,我正在尝试将搜索表单添加到我的网页: @using (Html.BeginForm("CheckCourses", "Home", new { programId = ViewBag.ProgramId }, FormMethod.Get)) { <p class="col-md-12"> Find by course or teacher name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as

我正在尝试将搜索表单添加到我的网页:

@using (Html.BeginForm("CheckCourses", "Home", new { programId = ViewBag.ProgramId }, FormMethod.Get))
{
    <p class="col-md-12">
        Find by course or teacher name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
        <input type="submit" value="Search Course" class="btn-primary" />
    </p>
}
更新

控制员应要求:

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        return View("Index", _programService.Programs.ToList());
    }

    public ActionResult CheckCourses(int programId, string searchString, int? page) {
        var courses = from s in _courseService.Courses select s;
        if (searchString != null)
        {
            page = 1;
        }

        ViewBag.CurrentFilter = searchString;
        ViewBag.ProgramId = programId;

        if (!String.IsNullOrEmpty(searchString))
        {
            searchString = searchString.ToLower();
            courses = courses.Where(s => s.CrsName.ToLower().Contains(searchString) || s.EducationUser.FullName.ToLower().Contains(searchString));
        }
        courses = courses.OrderBy(s => s.Id);
        int pageSize = 20;
        int pageNumber = (page ?? 1);

        return View("Courses",courses.ToPagedList(pageNumber, pageSize));
    }

}
更新2

呈现的
元素显示函数运行良好,但按下搜索按钮时问题仍然存在:

<form action="/Home/CheckCourses?programId=2" method="get">            
    <p class="col-md-12">
        Find by course or teacher name: <input id="SearchString" name="SearchString" type="text" value="">
    <input type="submit" value="Search Course" class="btn-primary">
    </p>
</form>

按课程或教师姓名查找:


尝试将programId参数移动到隐藏字段中:

@using (Html.BeginForm("CheckCourses", "Home", FormMethod.Get)){
    <p class="col-md-12">
        @Html.Hidden("programId", ViewBag.ProgramId)
        Find by course or teacher name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
        <input type="submit" value="Search Course" class="btn-primary" />        
    </p>
}
@使用(Html.BeginForm(“CheckCourses”、“Home”、FormMethod.Get)){

@Html.Hidden(“programId”,ViewBag.programId) 按课程或教师姓名查找:@Html.TextBox(“SearchString”,ViewBag.CurrentFilter为字符串)

}
您还可以为该视图粘贴HTTPGet Controller方法吗?@MichaelBurns我添加了
CheckCourses
动作控制器,将程序ID显式地强制转换为int,如
new{programId=(int)ViewBag.programId}
。您可以通过表单元素的呈现HTML吗?您还可以尝试为programID添加一个
html.hiddenfor
,如下所示:wll@lte__What控制器方法用于渲染窗体视图并添加原始ViewBag.ProgramId?您是否使用相同的方法CheckCourses来呈现搜索表单并发回搜索字符串?哦,哇,这样做了(使用
int
而不是
string
)。你能解释一下原因吗?当你点击search时,它出现了。当你在BeginForm helper方法中声明它时,它覆盖了你现有的programId参数。当你使用FormMethod.Get时,任何参数值都会被表单数据覆盖:我想我在回答正确之前的半个小时的评论是:为ProgramId添加一个
html.hiddenfor
,不需要
(int)
,因为querystring中的所有数据都是可为null的
字符串类型,因此得名。
@using (Html.BeginForm("CheckCourses", "Home", FormMethod.Get)){
    <p class="col-md-12">
        @Html.Hidden("programId", ViewBag.ProgramId)
        Find by course or teacher name: @Html.TextBox("SearchString", ViewBag.CurrentFilter as string)
        <input type="submit" value="Search Course" class="btn-primary" />        
    </p>
}