Дело не имеет значения. Среда MVC отображает его без учета регистра.

ользовал новый ASP.Net MVC 3 RemoteAttribute для отправки удаленного вызова к методу действия, у которого был один параметр. Теперь я хочу передать второй параметр, используя свойство AdditionalFields:

[Remote("IsEmailAvailable", "Users", AdditionalFields = "InitialEmail")]

Где IntialEmail - это скрытое поле в представлении. Действие выглядит так:

public JsonResult IsEmailAvailable(
            string email,
            string InitialEmail)
{
//etc.
}

При отображении представления скрытое поле заполняется, но когда метод Action запускается удаленно, значением является пустая строка.

В других местах чувствительность к регистру могла быть проблемой, поэтому я убедился, что метод Action имеет одинаковый регистр для обоих параметров.

Любые другие предложения? Эти дополнительные поля раньше назывались полями.

Спасибо,

Beaudetious

 beaudetious31 янв. 2011 г., 18:50
Ответ на другой мой вопрос тоже решил этот вопрос:stackoverflow.com/questions/4696276/... Итак, как мне пометить ответ на этот вопрос?
 Joe Cartano22 янв. 2011 г., 02:21
Можете ли вы добавить разметку вашего взгляда? Дополнительное поле должно соответствовать одному из полей в вашем представлении. Получаете ли вы значение для электронной почты, но пустую строку для InitialEmail? Для расследования полезно отладить с помощью firebug, и вы можете увидеть запрос, который отправляется обратно на сервер. Он должен иметь строку запроса для полей, ожидаемых вашим действием. Что-то вроде? Email = бла? InitialEmail = бла ...

Ответы на вопрос(3)

что и поле, которое вы проверяете (как в примере с Дарином), в противном случае значение скрытого поля не будет отправлено в качестве параметра для метода действия проверки "public ActionResult IsEmailAvailable (string email, string initialEmail )»

Решение Вопроса

Модель:

public class MyViewModel
{
    [Required]
    [Remote("IsEmailAvailable", "Home", AdditionalFields = "InitialEmail")]
    public string Email { get; set; }
}

контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return View(model);
    }

    public ActionResult IsEmailAvailable(string email, string initialEmail)
    {
        return Json(false, JsonRequestBehavior.AllowGet);
    }
}

Посмотреть:

@model AppName.Models.MyViewModel
@{
    ViewBag.Title = "Home Page";
}
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
    @Html.TextBoxFor(x => x.Email)
    @Html.ValidationMessageFor(x => x.Email)
    <input type="hidden" name="InitialEmail" value="[email protected]" />
    <input type="submit" value="OK" />
}

IIRC была некоторая ошибка в ASP.NET MVC 3 RC2 с этой удаленной проверкой, которая была исправлена ​​в RTM.

 Elisabeth10 авг. 2012 г., 22:44
@Pittfall Переопределяет реализацию RemoteValidation: P
 Darin Dimitrov10 мая 2012 г., 15:52
Я не знаю никаких различий.
 Pittfall10 мая 2012 г., 15:56
Я нашел это. Вы должны установить этот атрибут в контроллере[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
 beaudetious21 янв. 2011 г., 19:59
Если серьезно, выведите значение InitialEmail в методе IsEmailAvailable в окно вывода. Вы увидите, что это пусто. Я могу запустить удаленный метод, но дополнительный параметр не имеет значения.
 beaudetious21 янв. 2011 г., 19:58
Дарин: Ты и твое "это работает для меня" однажды станет моей смертью. ;)

string initialEmail) в параметре email должна указываться как Email, точно такая же, как Property Email.

 Fred29 мар. 2016 г., 16:51
Дело не имеет значения. Среда MVC отображает его без учета регистра.

Ваш ответ на вопрос