Javascript 将值传递给控制器

Javascript 将值传递给控制器,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我正在努力将我需要的所有数据传递给MVC中的控制器。代码如下: <td><a href=@Url.Action("AddCourseToStudentPlan", "Users", new { courseID = c.CourseId, userID = user.UserId, semNum = num}) title="Add Course to Semester" >"Here"</a></td> 预期的输出是,当用户单击其中一个选

我正在努力将我需要的所有数据传递给MVC中的控制器。代码如下:

 <td><a href=@Url.Action("AddCourseToStudentPlan", "Users", new { 
courseID = c.CourseId, userID = user.UserId, semNum = num}) title="Add Course 
to Semester" >"Here"</a></td>
预期的输出是,当用户单击其中一个选项卡时,他们会看到已添加课程的列表,并且可以通过单击代码前一代码块中的链接将课程添加到此选项卡。因此,单击选项卡应该更改
@Url.Action()
方法中
num
的值。但我当然不能这么做,因为C#是服务器端


所以问题是,在页面加载后,如何将一些变量semNum(由客户端确定)传递给
@Url.Action()
方法

有多种方法可以做到这一点。这是相当直观的,不会在VisualStudio中导致语法错误

  • 使用您知道的信息创建URL模板
  • 单击链接时,查看选项卡的当前状态
  • 使用该信息完成URL
  • 根据需要导航
  • 
    
    
  • 
    //创建URL模板
    //听起来semNum是唯一需要改变的值,
    //但您可以创建具有多个占位符的模板。
    //我们将semNum的值传递为零,这样路由在没有
    //与实际学期数冲突。
    var addUrlTemplate='@Url.Action(“AddCourseToStudentPlan”,“Users”,new{courseID=c.courseID,userID=user.userID,semNum=0}';
    //为了简洁起见,这里使用jQuery(可以很好地与vanilla JS配合使用)
    var addButton=$(“#添加url按钮”),
    制表符=$(“制表符”);
    添加按钮。单击(函数(){
    //通过查询选项卡列表确定所选选项卡
    var activeTab=tabs.find(“li.active”),
    semesterNumber=activeTab.attr(“学期编号”);
    //构造完整的URL。根据URL,您可能需要
    //更聪明的正则表达式。确保不会意外
    //替换错误的值。
    var addUrl=addUrlTemplate.replace(/0$/,semesterNumber);
    //根据需要导航
    window.location.href=addUrl;
    ));
    
    有多种方法可以做到这一点。这种方法非常直观,不会在Visual Studio中导致语法错误

  • 使用您知道的信息创建URL模板
  • 单击链接时,查看选项卡的当前状态
  • 使用该信息完成URL
  • 根据需要导航
  • 
    
    
  • 
    //创建URL模板
    //听起来semNum是唯一需要改变的值,
    //但您可以创建具有多个占位符的模板。
    //我们将semNum的值传递为零,这样路由在没有
    //与实际学期数冲突。
    var addUrlTemplate='@Url.Action(“AddCourseToStudentPlan”,“Users”,new{courseID=c.courseID,userID=user.userID,semNum=0}';
    //为了简洁起见,这里使用jQuery(可以很好地与vanilla JS配合使用)
    var addButton=$(“#添加url按钮”),
    制表符=$(“制表符”);
    添加按钮。单击(函数(){
    //通过查询选项卡列表确定所选选项卡
    var activeTab=tabs.find(“li.active”),
    semesterNumber=activeTab.attr(“学期编号”);
    //构造完整的URL。根据URL,您可能需要
    //更聪明的正则表达式。确保不会意外
    //替换错误的值。
    var addUrl=addUrlTemplate.replace(/0$/,semesterNumber);
    //根据需要导航
    window.location.href=addUrl;
    ));
    
    当用户单击链接时,您可以将最后的
    num
    值发布到您的服务器,并在控制器中相应地重定向到该操作您的问题对我来说不是很清楚。但是无论如何,如果您的问题是Url.action,那么您可以跳过它。只需使用java脚本函数,在函数中执行任何您需要的操作d要计算数字并进行重定向,当用户单击链接时,您可以将最终的
    num
    值发布到服务器,并在控制器中相应地重定向到该操作。我并不清楚您的问题。但是无论如何,如果您的问题是Url.action,那么您可以跳过它。只需使用java脚本函数我应该说得更清楚一些,但我写得很快;抱歉。courseID也是可变的,因为我希望用户也能够选择它。因此,以这种方式设置一个预制url是行不通的。不过,我想我可能能够修改这个解决方案可以让javascript函数生成正确的URL。非常感谢!我本应该更清楚,但我写得很快;很抱歉。courseID也是可变的,因为我希望用户也能够选择它。因此,以这种方式设置预制作的URL是不可行的。不过,我想我可能能够修改这个解决方案这样javascript函数就可以构建正确的URL了。非常感谢!
    <ul class="nav nav-tabs" id="Semtabs">
                        @{ var year = plan.CatalogYear; }
                        <li class="active"><a href="#SEM1" onclick="StoreNum(1)" data-toggle="tab" aria-expanded="true">Fall @year</a></li>
                        @{ year += 1; }
                        <li class=""><a href="#SEM2" data-toggle="tab" aria-expanded="true">Spring @year</a></li>
                        <li class=""><a href="#SEM3" data-toggle="tab" aria-expanded="true">Fall 2014</a></li>
                        <li class=""><a href="#SEM4" data-toggle="tab" aria-expanded="true">Spring 2015</a></li>
                        <li class=""><a href="#SEM5" data-toggle="tab" aria-expanded="true">Fall 2015</a></li>
                        <li class=""><a href="#SEM6" data-toggle="tab" aria-expanded="true">Spring 2016</a></li>
                        <li class=""><a href="#SEM7" data-toggle="tab" aria-expanded="true">Fall 2016</a></li>
                        ...