MVC:如何在javascript块中设置C#静态变量?

时间:2015-04-28 20:09:40

标签: c# jquery asp.net-mvc razor model-view-controller

我有这个功能,我希望能够对静态类进行更改。

$("#DDLRegion").change(function () {

     var selectedItem = $(this).val();
     ViewBag.Region = selectedItem;
     @RegionSwitch.setRegion(ViewBag.Region);

     switch (selectedItem) {
        case 'Place':
           window.location.href = '@Url.Action("Index", "Place")'
           break;
        case 'Thing' :
           window.location.href = '@Url.Action("Index", "Thing")'
           break;
        case 'Region' :
           window.location.href = '@Url.Action("Index", "Region")'
           break;
        default:
           window.location.href = '@Url.Action("Index", "Place")'
           alert("Blarg");
           break;
     }
  });

有没有办法能够从内部(我相信是)jQuery脚本访问C#静态类?我是MVC和Web开发的新手。任何建议也欢迎成为更好的开发者。

@RegionSwitch._currentRegion = selectedItem;

上述内容也不起作用,并在Chrome的JavaScript控制台中显示为= selectedItem;

2 个答案:

答案 0 :(得分:0)

正如@BillCheng和@Stephen所说,你要做的是从jQuery做一个<?php $myfile = fopen("userlog.txt", "a"); fwrite($myfile, "\n\n\n\r\r\n"); fwrite($myfile, "\n\n\n\r\r\n"); fwrite($myfile, date("F j, Y, g:i a") . "\r"); fwrite($myfile, $_SERVER['REMOTE_ADDR']); fclose($myfile); $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); $Uname = $_POST["Uname"]; $status1 = False; $status2 = False; $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { $uploadOk = 1; $con = $con = mysql_connect("localhost:3036","username","password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("Rate_It", $con); $imgData = file_get_contents($_FILES["fileToUpload"]["tmp_name"]); $zero = 0; $pid = "NULL"; $name = "car789"; $date = "CURDATE()"; $sql = sprintf("INSERT INTO Picture (Pid, Uname, Image, Views, RateTotal, UploadName, UploadDate) VALUES ('%s', '%s', '%s', '%d', '%d' ,'%s' ,%s)", $pid, $Uname, mysql_real_escape_string($imgData), $zero, $zero, $target_file, $date ); $myfile = fopen("test.txt", "a"); fwrite($myfile, "\n\n\n\r\r\n"); fwrite($myfile, "\n\n\n\r\r\n"); fwrite($myfile, date("F j, Y, g:i a")); fwrite($myfile, "$sql\n"); fclose($myfile); if ( mysql_query($sql) == TRUE) { $status1 = True; } else { $status1 = False; } mysql_close($con); } else { $uploadOk = 0; } if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { $status2 = True; } else { $status2 = False; } if($status1 == True && $status2 == True){ echo "True"; } else{ echo "False"; } ?> 请求。

这就是你在jQuery上的implement a post request(Ajax)。

在ASP.NET MVC方面,无论输入是否为Ajax,Actions都是相同的。您只需要以匹配帖子参数的方式实现Action参数。 Here是关于模型绑定的好文章。

答案 1 :(得分:0)

好的,所以我在查看POST请求后解决了我的问题。感谢@BillCheng,@ Stephen和@andrerpena的建议。我将我的数据发布到控制器上,然后控制器完成了我需要的所有很酷的C#。

javascript更改函数中的Ajax请求

     $.ajax({
        url: '/region/changeRegion',
        type: 'POST',
        data: { "selectedRegion": $(this).val() },
        dataType: 'text',
        success: function (data) {
           alert(data);
        },
        error: function () {
           alert('Nope');
        }
     });

用于处理字符串的控制器操作(js称之为文本-_-)

  [HttpPost]
  public void ChangeRegion(string selectedRegion)
  {
     RegionSwitch._currentRegion = selectedRegion;
  }

对于将来遇到此问题的任何人,预期参数名称需要与ajax请求中的参数名称匹配。

data: { "**selectedRegion**" : $(this).val() },
public void ChnageRegion(string **selectedRegion**)

也不要忘记将网址与正确的控制器和操作相匹配。