String
обозначает System.String
, и это - тип Платформы.NET. string
псевдоним на языке C# для System.String
. Они оба компилируются в [1 111] System.String
на (промежуточном языке) IL , таким образом, нет никакого различия. Выберите то, что Вы любите и используете это. Если бы Вы кодируете в C#, я предпочел бы string
, поскольку это - псевдоним типа C# и известный программистами C#.
я могу сказать то же [приблизительно 1 112] (int
, System.Int32
) и т.д.
Вы можете сделать это следующим образом:
Пример использования jquery:
<div id="loading" style="display: none">
Loading...
</div>
<a href="javascript:void(0);"
onclick="searchFor('something')">Search for something</a>
<script type="text/javascript">
function searchFor(what) {
$('#loading').fadeIn();
$.ajax({
type: 'GET',
url: 'search?query=' + what,
success: function(data) {
location.href = data.ResultsUrl;
}
});
}
</script>
(edit:)
Контроллер будет примерно таким:
public class SearchController
{
public ActionResult Query(string q)
{
Session("searchresults") = performSearch();
return Json(new { ResultsUrl = 'Results'});
}
public ActionResult Results()
{
return View(Session("searchresults"));
}
}
Считайте это псевдокодом: я фактически не тестировал его.
Чтобы сохранить его без использования JavaScript, вы можете разбить поиск на несколько действий.
Первое действие (/ Search /? Q = whodunit) просто выполняет некоторую проверку ваших параметров (чтобы вы знали, нужно ли вам повторно отображать форму), а затем возвращает представление, которое использует мета-обновление, чтобы указать браузеру обратно на «настоящее» действие поиска.
Вы можете реализовать это с помощью двух отдельных действий контроллера. (скажем, «Поиск и результаты»):
public ActionResult Search(string q)
{
if (Validate(q))
{
string resultsUrl = Url.Action("Results", new { q = q });
return View("ResultsLoading", new ResultsLoadingModel(resultsUrl));
}
else
{
return ShowSearchForm(...);
}
}
bool Validate(string q)
{
// Validate
}
public ActionResult Results(string q)
{
if (Validate(q))
{
// Do Search and return View
}
else
{
return ShowSearchForm(...);
}
}
Но это дает вам некоторые затруднения в плане обновления. Таким образом, вы можете повторно объединить их в одно действие, которое может сигнализировать о двухфазном процессе с помощью TempData.
static string SearchLoadingPageSentKey = "Look at me, I'm a magic string!";
public ActionResult Search(string q)
{
if (Validate(q))
{
if (TempData[SearchLoadingPageSentKey]==null)
{
TempData[SearchLoadingPageSentKey] = true;
string resultsUrl = Url.Action("Search", new { q = q });
return View("ResultsLoading", new ResultsLoadingModel(resultsUrl));
}
else
{
// Do actual search here
return View("SearchResults", model);
}
}
else
{
return ShowSearchForm(...);
}
}
Это охватывает пункты 2, 3, 4 и, возможно, 5.
Включение поддержки № 1 подразумевает что вы собираетесь сохранять результаты поиска в сессиях, db и т. д.
В этом случае просто добавьте желаемую реализацию кеша как часть бита «Выполнить фактический поиск здесь» и добавьте проверку результата кеширования, чтобы обойти страницу загрузки. например,
if (TempData [SearchLoadingPageSentKey] == null)
становится
if (TempData [SearchLeadingPageSentKey] == null &&! SearchCache.ContainsKey (q))
Хороший вопрос. Возможно, мне вскоре придется реализовать аналогичное решение в asp.net mvc самому, но я не думаю, что это потребует принципиально иной реализации, чем решение на основе веб-форм, различные примеры которого есть в сети:
Я ранее создавал реализацию на основе первой ссылки выше с веб-формами. Основной процесс:
Преимущество этого заключается в том, что для него вообще не требуется Javascript. Самый большой недостаток, о котором я могу думать (с точки зрения пользователя), заключается в том, что это не совсем "Web 2.0", и пользователям придется ждать, пока не обновится браузер.
Что-то основано на предложении @Jan Willem B на основе AJAX должен быть жизнеспособной альтернативой этому многопоточному шаблону состояния ожидания. Что лучше всего соответствует вашим требованиям, вам придется решать самостоятельно. Пример с aspfree.com, который я опубликовал, должен отвечать большинству ваших требований и работать с MVC так же хорошо, как и с веб-формами.
Это совершенно другое решение, но я не только бегло рассмотрел его.)Преимущество этого метода в том, что оно вообще не требует Javascript. Самый большой недостаток, о котором я могу думать (с точки зрения пользователя), заключается в том, что это не совсем "Web 2.0", и пользователям придется ждать, пока не обновится браузер.
Что-то основано на предложении @Jan Willem B на основе AJAX должен быть жизнеспособной альтернативой этому многопоточному шаблону состояния ожидания. Что лучше всего соответствует вашим требованиям, вам придется решать самостоятельно. Пример с aspfree.com, который я опубликовал, должен соответствовать большинству ваших требований и работать с MVC так же хорошо, как и с веб-формами.
Самый большой недостаток, о котором я могу думать (с точки зрения пользователя), заключается в том, что это не совсем "Web 2.0", и пользователям придется ждать, пока не обновится браузер.Что-то основано на предложении @Jan Willem B на основе AJAX должен быть жизнеспособной альтернативой этому многопоточному шаблону состояния ожидания. Что лучше всего соответствует вашим требованиям, вам придется решать самостоятельно. Пример с aspfree.com, который я опубликовал, должен отвечать большинству ваших требований и работать с MVC так же хорошо, как и с веб-формами.
Самый большой недостаток, о котором я могу думать (с точки зрения пользователя), заключается в том, что это не совсем "Web 2.0", и пользователям придется ждать, пока не обновится браузер.Что-то основано на предложении @Jan Willem B на основе AJAX должен быть жизнеспособной альтернативой этому многопоточному шаблону состояния ожидания. Что лучше всего соответствует вашим требованиям, вам придется решать самостоятельно. Пример с aspfree.com, который я опубликовал, должен соответствовать большинству ваших требований и работать с MVC так же хорошо, как и с веб-формами.
Что лучше всего соответствует вашим требованиям, вам придется решать самостоятельно. Пример с aspfree.com, который я опубликовал, должен отвечать большинству ваших требований и работать с MVC так же хорошо, как и с веб-формами. Что лучше всего соответствует вашим требованиям, вам придется решать самостоятельно. Пример с aspfree.com, который я опубликовал, должен соответствовать большинству ваших требований и работать с MVC так же хорошо, как и с веб-формами.