我無法使用ActionResult方法制作簡單的MVC 3控制器/視圖/模型程序,該方法包括具有Prefix屬性的Bind屬性。無法使BindAttribute前綴屬性在ASP.NET MVC3中工作
當我從URL調用操作方法時,我嘗試嘗試的一個示例可能會填充該參數。
下面是示例控制器隨後視圖:
//Controller
//public ActionResult PrefixExample(int number = 0)
public ActionResult PrefixExample([Bind(Prefix="okay")]int? number)
{
return View(number);
}
//View
@model Int32?
@{
ViewBag.Title = "Example";
}
<h2>Example</h2>
@using (Html.BeginForm())
{
if (@Model.HasValue)
{
<label>@Model.Value.ToString()</label>
} else {
<label>@Model.HasValue.ToString()</label>
}
<input type="submit" value="submit" />
}
如果使用這個URL http://localhost/MVCApp/Home/Example?okay=3
參數,數,被填充。如果我使用此網址http://localhost/MVCApp/Home/Example?number=3
,則不填充該參數。有趣的是,與第一個網址,當我查看源代碼時,前綴好吧不顯示。
如果我取消我的控制器的第一行和註釋掉第二行,情況正好相反:與URL 沒關係將不填充數但使用數將填充數第二網址控制器中的。
我想知道如何讓下面的例子接受一個url並正確設置「view source」前綴。這裏有一個可能的網址http://localhost/MVCApp/Home/SpecificPerson?PersonId=0&FirstName=Joe&LastName=Doe
請注意,如果我從控制器方法中刪除綁定屬性,上面的url將與下面的MVC應用程序一起工作。
這裏是我的模型/控制器/視圖:
//model:
namespace MVCApp.Models
{
public class Person
{
[HiddenInput(DisplayValue = false)]
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
//controller
namespace MVCApp.Controllers
{
public class HomeController : Controller
{
public ActionResult SpecificPerson([Bind(Prefix = "myPerson")]Person aPerson)
{
return View("SpecificPerson", aPerson);
}
}
}
//view
@model MVCApp.Models.Person
@{
ViewBag.Title = "SpecificPerson";
}
<h2>SpecificPerson</h2>
@Html.EditorForModel();
<br />
@Html.EditorFor(m => m);
我想看看上面的例子中工作。任何人都可以告訴我爲什麼它不能如我所期望的那樣工作,或者我能做些什麼來使它以這種方式工作,我們將不勝感激。
預先感謝您。