Как сделать панель обновления в ASP.NET MVC

это то, что я нашел:

    #!/usr/bin/env node

require(__dirname+"/processor-usage.js").startWatching();

var shouldRun = true;
var desiredLoadFactor = .5;

function blockCpuFor(ms) {
    var now = new Date().getTime();
    var result = 0
    while(shouldRun) {
        result += Math.random() * Math.random();
        if (new Date().getTime() > now +ms)
            return;
    }   
}

function start() {
    shouldRun = true;
    blockCpuFor(1000*desiredLoadFactor);
    setTimeout(start, 1000* (1 - desiredLoadFactor));
}

setInterval(function() {
    console.log("current process cpu usage: "+(global.processCpuUsage || 0)+"%");}
, 1000);

if (process.argv[2]) {
    var value = parseFloat(process.argv[2]);
    if (value < 0 || value > 1) {
        console.log("please give desired load value as a range [0..1]");
    process.exit(-1);
    } else {
        desiredLoadFactor = value;
    }
}
start();

на http://blackholethought.blogspot.de/2012/08/measuring-cpu-usage-of-nodejs-from.html

42
задан Michael Currie 7 September 2015 в 20:04
поделиться

3 ответа

Вы можете использовать частичное представление в ASP.NET MVC для получения аналогичного поведения. Частичное представление все еще может создавать HTML на сервере, и вам просто нужно вставить HTML в нужное место (фактически, помощники MVC Ajax могут настроить это для вас, если вы хотите включить библиотеки MSFT Ajax).

В основном представлении вы можете использовать форму Ajax.Begin для настройки асинхронного запроса.

    <% using (Ajax.BeginForm("Index", "Movie", 
                            new AjaxOptions {
                               OnFailure="searchFailed", 
                               HttpMethod="GET",
                               UpdateTargetId="movieTable",    
                            }))

       { %>
            <input id="searchBox" type="text" name="query" />
            <input type="submit" value="Search" />            
    <% } %>

    <div id="movieTable">
        <% Html.RenderPartial("_MovieTable", Model); %>
   </div>

Частичное представление инкапсулирует раздел страницы, который вы хотите обновить.

<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Movie>>" %>

<table>
    <tr>       
        <th>
            Title
        </th>
        <th>
            ReleaseDate
        </th>       
    </tr>
    <% foreach (var item in Model)
       { %>
    <tr>        
        <td>
            <%= Html.Encode(item.Title) %>
        </td>
        <td>
            <%= Html.Encode(item.ReleaseDate.Year) %>
        </td>       
    </tr>
    <% } %>
</table>

Затем настройте действие вашего контроллера для обработки обоих случаев. Результат частичного просмотра хорошо работает с запросом asych.

public ActionResult Index(string query)
{          
    var movies = ...

    if (Request.IsAjaxRequest())
    {
        return PartialView("_MovieTable", movies);
    }

    return View("Index", movies);      
}

Надеюсь, что это поможет.

<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Movie>>" %>

<table>
    <tr>       
        <th>
            Title
        </th>
        <th>
            ReleaseDate
        </th>       
    </tr>
    <% foreach (var item in Model)
       { %>
    <tr>        
        <td>
            <%= Html.Encode(item.Title) %>
        </td>
        <td>
            <%= Html.Encode(item.ReleaseDate.Year) %>
        </td>       
    </tr>
    <% } %>
</table>

Затем настройте действие вашего контроллера для обработки обоих случаев. Результат частичного просмотра хорошо работает с запросом asych.

public ActionResult Index(string query)
{          
    var movies = ...

    if (Request.IsAjaxRequest())
    {
        return PartialView("_MovieTable", movies);
    }

    return View("Index", movies);      
}

Надеюсь, что это поможет.

<%@ Control Language="C#" Inherits="ViewUserControl<IEnumerable<Movie>>" %>

<table>
    <tr>       
        <th>
            Title
        </th>
        <th>
            ReleaseDate
        </th>       
    </tr>
    <% foreach (var item in Model)
       { %>
    <tr>        
        <td>
            <%= Html.Encode(item.Title) %>
        </td>
        <td>
            <%= Html.Encode(item.ReleaseDate.Year) %>
        </td>       
    </tr>
    <% } %>
</table>

Затем настройте действие вашего контроллера для обработки обоих случаев. Результат частичного просмотра хорошо работает с запросом asych.

public ActionResult Index(string query)
{          
    var movies = ...

    if (Request.IsAjaxRequest())
    {
        return PartialView("_MovieTable", movies);
    }

    return View("Index", movies);      
}

Надеюсь, что это поможет.

64
ответ дан 26 November 2019 в 23:48
поделиться

Если вы новичок в asp.mvc, я рекомендую вам загрузить пример приложения NerdDinner ( исходный код ). Там вы найдете достаточно информации, чтобы начать эффективно работать с mvc. У них также есть примеры ajax. Вы обнаружите, что вам не нужна, и обновите панель.

3
ответ дан 26 November 2019 в 23:48
поделиться

По сути, «традиционные» серверные элементы управления (включая ASP.NET AJAX) не будут работать с MVC из коробки ... жизненный цикл страницы сильно отличается. С помощью MVC вы визуализируете свой поток Html гораздо более непосредственно, чем абстрагированный / псевдосохраняющий блок, в который вас обертывает WebForms.

Чтобы «смоделировать» UpdatePanel в MVC, вы можете подумать о заполнении

с помощью jQuery для достижения аналогичного результата. действительно простой, доступный только для чтения пример находится на этой странице «поиска»

HTML-код прост:

<input name="query" id="query" value="dollar" />
<input type="button" onclick="search();" value="search" />

Данные для «панели» находятся в формате JSON - MVC может сделать это автоматически, см. NerdDinner SearchController. cs

    public ActionResult SearchByLocation(float latitude, float longitude) {
        // code removed for clarity ...
        return Json(jsonDinners.ToList());
    }

и jQuery / javascript тоже

  <script type="text/javascript" src="javascript/jquery-1.3.2.min.js"></script>
  <script type="text/javascript">
  // bit of jquery help
  // http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/
  function search()
  {
    var q = $('#query').attr("value")
    $('#results').html(""); // clear previous
    var u = "http://"+location.host+"/SearchJson.aspx?searchfor=" + q;
    $("#contentLoading").css('visibility',''); // from tinisles.blogspot.com
    $.getJSON(u,
        function(data){ 
          $.each(data, function(i,result){ 
            $("<div/>").html('<a href="'+ result.url+'">'+result.name +'</a>'
                            +'<br />'+ result.description
                            +'<br /><span class="little">'+ result.url +' - '
                            + result.size +' bytes - '
                            + result.date +'</span>').appendTo("#results");
          });
        $("#contentLoading").css('visibility','hidden');
        });
  }
  </script>

Конечно, UpdatePanel можно использовать в гораздо более сложных сценариях, чем этот (он может содержать INPUTS, поддерживает ViewState и триггеры на разных панелях и другие элементы управления). Если вам нужна такая сложность в вашем приложении MVC, боюсь, вы можете заняться какой-то специальной разработкой ...

4
ответ дан 26 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: