У меня есть страница профиля с функцией поиска по почтовому индексу https://postcodes.io. Пока у меня есть частичное представление с помощью формы Ajax с использованием следующего кода.
@using (Ajax.BeginForm("_CityLookUp", "Home", new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "div1",
InsertionMode = InsertionMode.Replace
}))
{
<div id="div1">
<div class="form-group">
@Html.LabelFor(m => m.PostCode, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.PostCode, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-10">
@Html.HiddenFor(m => m.County, new { @class = "form-control", id = "County" })
</div>
</div>
<div class="form-group">
<div class="col-md-10">
@Html.HiddenFor(m => m.City, new { @class = "form-control", id = "City" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-primary" value="Look Up" />
</div>
</div>
</div>
}
Это работает.Затем я визуализировал страницу частичного доступа на главной странице профиля с формой основного профиля.
Я просто хочу присвоить значение из двух других скрытых полей полям на главной странице.
ЧастичноеКонтроллер
[HttpGet]
public PartialViewResult _CityLookUp()
{
return PartialView();
}
[HttpPost]
public PartialViewResult _CityLookUp(string postcode)
{
var client = new PostcodesIOClient();
var result = client.Lookup(postcode);
var jst = new AddressLookupViewModel();
jst.City = result.AdminDistrict;
jst.County = result.AdminCounty;
jst.PostCode = postcode;
ViewBag.City = jst.City;
ViewBag.County = jst.County;
var results = new BooksViewModel();
results.City = jst.City;
results.County = jst.County;
return PartialView(jst);
}
Я пробовал новую модель представления и присваивал результаты модели представления, но она не работала.Пробовал использовать JavaScript, чтобы получить значение скрытого поля, не повезло.Если вы предпочитаете использовать отдельный метод, объясните, как бы вы его реализовали.
Родительский вид
@model TestingView.Models.ParentViewModel
<div class="container">
@Html.Partial("_CityLookUp")
<div class="form-group">
<div class="col-md-10">
@Html.TextBoxFor(v => v.City, new { @class = "form-control", id = "City" })
</div>
</div>
</div>
PartialViewModel
namespace TestingView.Models
{
public class AddressLookupViewModel
{
public string PostCode { get; set; }
public string County { get; set; }
public string City { get; set; }
}
}
Родительский вид модели
namespace TestingView.Models
{
public class ParentViewModel
{
public string City { get; set; }
public string County { get; set; }
}
}
Дополнительный вопрос: по какой-то причине, когда я нахожусь над
@Html.HiddenFor(m => m.City, new { @class = "form-control", id = "City" })
в родительском представлении, оно ссылается на AddressLookUpViewModel, а не BooksViewModel в родительском представлении. Я добавил обе модели представления.