简体   繁体   中英

How to execute jQuery in MVC Controller C#

Is it possible to run jQuery from a MVC C# controller?

if (ModelState.IsValid){
 //lots of C# asp.net code here

 jqueryFunctionName();

}

It's important that there is a check somehow before the jQuery runs

Perhaps i can do it straight from jQuery itself, but i'm not sure how to check it?

The idea is Form -> Submit -> SOMETHING checks if valid -> if yes then wait graphic -> 2 seconds pauze -> redirect to "thanks.cshtml"

In your controller's action:

var vm = new YourViewModelTypeWithPropertyIsValid();
vm.IsValid = ModelState.IsValid;
return View(vm);

In your view:

@model YourViewModelTypeWithPropertyIsValid

<script type="text/javascript">

    var isModelValid = @Model.IsValid ? 'true' : 'false';
    $( document ).ready(function() {
        // Any JS code here
        // ...

        if (isModelValid) {
            setTimeout(
                function () {
                    location.assign('/redirect_path_after_2s_delay');
                },
                2000);
            );
        }
    });
<script>

I prefer typed views.

If you use untyped views, use the code below.

In your controller's action:

ViewData["IsModelValid"] = ModelState.IsValid ? "true" : "false";
return View();

In your view:

<script type="text/javascript">
    var isModelValid = @ViewData["IsModelValid"];
    $( document ).ready(function() {
        // Any JS code here
        // ...

        if (isModelValid) {
            // See the code above.
        }
    });
<script>

If the code runs in the view then you can try something like this. is a special asp tag. If the should indeed run in controller, than it is not possible to run JS code there.

if (ModelState.IsValid){
 //lots of C# asp.net code here

 <text>
  <script>
  jqueryFunctionName();
  </script>
 </text>
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM