У меня есть простой вид, где у меня есть форма AJAX я использую для фильтрации записей:Ajax запрос освежать всю страницу вместо части
@using (Ajax.BeginForm("Index", new AjaxOptions()
{
InsertionMode=InsertionMode.Replace,
UpdateTargetId="dane"
}))
{
@Html.Partial("SearchTab")
}
@Html.Partial("ShowPartial") // <--- id="dane"
Частичное SearchTab:
<div class="row">
<div class="col-lg-3">
<div class="input-group">
<div class="input-group-addon name">
User name:
</div>
<input type="text" name="name" class="form-control" />
</div>
</div>
<div class="col-lg-3">
<div class="input-group">
<div class="input-group-addon surname">
User surname:
</div>
<input type="text" name="surname" class="form-control" />
</div>
</div>
<div class="col-lg-3">
<div class="input-group">
<div class="input-group-addon devicename">
Device name:
</div>
<input type="text" name="deviceName" class="form-control" />
</div>
</div>
<div class="col-lg-3">
<div class="input-group">
<div class="input-group-addon devicemanufacturer">
Device Manufactuer:
</div>
<input type="text" name="deviceManufacturer" class="form-control" />
</div>
</div>
</div>
<input type="submit" class="btn btn-default" value="Filter" id="filter"/>
<br />
контроллер действия:
public ActionResult Index(string name, string surname ,string deviceName, string deviceManufacturer, string Page)
{
bool RoleId = ad.CheckIfAdmin(Request.LogonUserIdentity.Name.Substring(Request.LogonUserIdentity.Name.LastIndexOf(@"\") + 1));
ViewBag.RoleId = RoleId;
var deviceusages = db.DeviceUsages.Include(d => d.DeviceInstance).Include(d => d.Storage).Include(d => d.User).Where(w=>w.UserId!=6).Skip((int.Parse(Page)-1)*30).Take(30);
if(name!="" && name!=null)
{
deviceusages = deviceusages.Where(w => w.User.Name.Contains(name));
}
if (surname != "" && surname != null)
{
deviceusages = deviceusages.Where(w => w.User.Surname.Contains(surname));
}
if (deviceName != "" && deviceName != null)
{
deviceusages = deviceusages.Where(w => w.DeviceInstance.Device.Name.Contains(deviceName));
}
if (deviceManufacturer!= "" && deviceManufacturer != null)
{
deviceusages = deviceusages.Where(w => w.DeviceInstance.Device.Manufacturer.Contains(deviceManufacturer));
}
return View(deviceusages.ToList());
}
После ввода чего-либо в поле ввода и нажатия фильтра. Ajax должен обновить ShowPartial и сохранить значения в полях ввода из SerchTab, но вместо этого я получаю отфильтрованные записи и входы становятся пустыми. Может кто-нибудь предложить мне редактирует, чтобы изменить это поведение
Я использовал точный код, но не смог воспроизвести вашу проблему, я имею в виду, что форма сохраняет свои значения. Я думаю, что проблема не в элементах формы, вам нужно проверить другие части кода. – ramiramilu
Мне удалось решить мою проблему. Мне нужно было изменить код для использования Html-помощников. К сожалению, я могу принять свой ответ через два дня. – szpic
Я думаю, что вам не нужно менять свой код на HtmlHelpers. Я не вижу причины для изменения. Но мне было интересно, как она исправила вашу проблему. В любом случае я рад, что вы решили свою проблему. – ramiramilu