У меня есть вид Razor с вызовом AJAX, и он пропускает прямо над ним. У меня есть точка останова отладки на методе контроллера. Я никогда не доберусь туда. Кроме того, сценарий запуска Alert iin даже не запускается.
Я попытался переместить сценарий перед первым абзацем в этом случае. Без изменений.
Просмотр кода:
Он входит в оператор switch - случай "New", но не выполняет вызов Ajax. При отладке он попадает в @Session ["UserName"], а затем переходит на разрыв.
@Scripts.Render("~/bundles/jquery")
@Styles.Render("~/Content/css")
@switch (@Session["NavState"])
{
case "New":
<br />
<p>Hi <span class="username">@Session["UserName"]</span> !</p>
<br />
<p> I'm so glad you decided to join us. Feel free to look around.</p>
<script type="text/javascript">
$.post("UserProfile/SetSessionVar", { variable = "NavState" }, function () { });
</script>
break;
case "Exists":
<br />
<p>Welcome back <span class="username">@Session["UserName"]</span> !</p>
<br />
<script type="text/javascript">
$.post("UserProfile/SetSessionVar", { variable = "NavState" }, function () { });
</script>
break;
default:
break;
}
<script type="text/javascript">
$(document).ready(function ()
{
Alert("here");
});
</script>
Я попытался изменить $ .post на $. ajax. Без изменений.
<script type="text/javascript">
function SetSessionVar() {
$.ajax({
type: "POST",
url: "UserProfile/SetSessionVar",
data: '{variable: "NavState"}',
contentType: "application/json; charset=utf-8",
dataType: "json"
});
</script>
Метод контроллера:
public void SetSessionVar(string variable)
{
if (variable == "NavState")
{
Session["NavState"] = "x";
}
}
Bundle.config:
using System.Web.Optimization;
namespace GbngWebClient
{
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
"~/Scripts/bootstrap.js"));
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/site.css",
"~/Content/validation.css"));
}
}
}