GrpSMK Ответов: 2

Предупреждение не отображается в MVC


После нажатия кнопки оповещение не отображается.Здесь я использую временные данные для отображения оповещения.

Что я уже пробовал:

Контроллер
[HttpPost]
    public ActionResult PlanUpdate(string stripeToken, string stripeEmail, string btnSubmit, FormCollection form,  UpdatePlan model)
    {
        string SubscriptionId = Session["SubsId"].ToString();
        var btnValue = form["btnSubmitValue"];
        string apiKey = "****";
        var stripeClient = new StripeClient(apiKey);

        var subscriptionService = new StripeSubscriptionService(apiKey);
        var subscriptionService1 = new StripeSubscriptionUpdateOptions();
        subscriptionService1.PlanId = btnValue;
        subscriptionService1.Prorate = true;
        subscriptionService1.ProrationDate = System.DateTime.Now;
         StripeSubscription stripeSubscription = subscriptionService.Update (SubscriptionId, subscriptionService1);

        TempData["notice"] = "Successfully registered";

        return View("Index");
    }

обзорная страница
<script>

    if ('@TempData["notice"]' != null) {
        alert("success");

    }
</script>

F-ES Sitecore

Если это не работает, то есть что-то в потоке кода, о чем Вы нам не говорите. Предупреждение на самом деле всегда будет показывать, есть ли у вас что-нибудь в TempData["notice"] или нет.

Vincent Maverick Durano

Возможно, это как-то связано с вашим состоянием "если". Вы пробовали проверить значение ваших временных данных? Попробуйте вместо этого предупредить значение ваших tempdata, например:

alert ('@TempData ["notice"]');

GrpSMK

Спасибо,я использовал boot box alert и решил свою проблему

2 Ответов

Рейтинг:
2

VINEET MISHRA 086

Попробуйте это, я надеюсь, что это решит вашу проблему. Тем не менее, я бы предложил использовать viewbag вместо TempData, viewbag не требует типизации.

public ActionResult About()
     {
         ViewBag.Message = "Your application description page.";
         TempData["notice"] = "Successfully registered";
         return View("Index");
     }


Вот код Javascript

var temp='@(TempData["notice"])';
    if(temp !=null)
    {
        alert('sucsecc');
    }


Рейтинг:
0

Zahid Mughal

Потому что

TempData["notice"]
он не доступен непосредственно в Javascript. Потому что ASP.NET части кода выполняются на сервере. JavaScript выполняется в браузере. Сервер просто видит JavaScript как текст, он бессмыслен и нефункционален. Только когда браузер получает страницу и интерпретирует JS, она выполняется.

Попробуйте использовать что-то подобное, чтобы получить доступ к переменной c# в javascript.

<script>
var myArray = <% = new JavaScriptSerializer().Serialize(TempData) %>;
if(myArray['notice']!=null){
alert("Success");
} 
</script>


Надеюсь, это будет полезно для Вас, пожалуйста, не забудьте отметить мой хороший рейтинг. Спасибо :)


GrpSMK

Да, попробовал этот метод не работает

[no name]

Проверьте элемент по F12 и сообщите мне об ошибке из консоли.

F-ES Sitecore

В коде нет ничего плохого, TempData предшествовал@, что означает, что MVC отображает значение TempData в выходном js. Если бы " @ " там не было, ваша точка зрения была бы правильной. Во-вторых, он использует двигатель бритвы, так что" <% % & gt; " нотация не применяется