3

[Remote] 属性を持つモデルにフィールドがあります。そのフィールドを Hidden フォーム要素に保存し、そのフォームを送信しようとすると、送信ボタンを 2 回クリックする必要があります。また興味深いのは、2 回目にクリックしてもリモート検証が行われていないことです (Fiddler はそう言っています)。

考え?

4

1 に答える 1

0

再現できません。非表示フィールドが Remote 属性で装飾されている場合、リモート関数が送信すると、送信ボタンを何度クリックしてもフォームを送信できませんfalse

例えば:

モデル:

public class MyViewModel
{
    [HiddenInput(DisplayValue = false)]
    [Remote("Check", "Home")]
    public string Id { get; set; }

    [Required]
    public string Name { get; set; }
}

コントローラ:

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

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

    public ActionResult Check(string Id)
    {
        return Json(Id == "2", JsonRequestBehavior.AllowGet);
    }
}

意見:

@model AppName.Models.MyViewModel

<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.EditorForModel()
    <input type="submit" value="OK" />
}

リモート関数は常に false を返すため、このフォームは送信できません。リモート関数が true を返した場合、もちろん他の検証に合格したと仮定して、1 回のクリックでそれを送信するのに十分です。

于 2011-03-04T10:05:25.247 に答える