Уже много часов я ищу решение.Я занимаюсь разработкой приложений на C # и ASP.NET с использованием MVC.Это приложение для управления почтой.У меня есть страница, которая ищет дубликаты в базе данных компаний, а затем отображает ее в списке.Затем, когда пользователь нажимает на название компании, он попадает на страницу, которая отображает дубликаты для этой компании.
Для этого на странице поиска я сделал Ajax-запрос к своему действию контроллера «Fiche», который будет использовать параметры, отправленные для построения запроса и возврата модели представления, заполненной дубликатами компании.
Действие вызывается один раз, с правильными параметрами, но затем оно вызывается дважды, с параметрами, установленными в falseдля логических значений и нуль для строки.Поэтому мне не удается найти дубликаты для компании.Вот мое событие нажатия:
$(a).click(function () {
//some code that sets the variables used in cc
var cc = {
rsoc: raison_sociale,
adr1: adresse,
cp: code_postal,
ville: ville_entreprise,
tel: telephone,
mail: e_mail,
user_id: code_cotisant,
profileConf: sessionStorage.getItem('categ')
}
$.ajax({
url: "@Url.Action("Fiche", "Doublons")",
type: "POST",
contentType: "application/json",
data: JSON.stringify({ cc: cc, rsoc: $(this).text() }),
success: function(response) {
response ? alert("It worked!") : alert("It didn't work.");
}
});
})
Вот действие моего контроллера:
public ActionResult Fiche(CompareConfiguration cc, string rsoc)
{
bool categorie = cc.profileConf != null ? true : false;
Models.Entreprise entreprise = new Models.Entreprise();
DataTable dt_doublons = new DataTable();
if (rsoc != null)
{
dt_doublons = entreprise.search_doublons(cc.Rsoc, cc.Adr1, cc.CP, cc.Ville, cc.Tel, cc.Mail, cc.User_Id, categorie, cc.profileConf.Split(','));
for (int i = 0; i < dt_doublons.Rows.Count; i++)
{
if(rsoc != dt_doublons.Rows[i]["rsoc"].ToString())
{
dt_doublons.Rows[i].Delete();
}
}
dt_doublons.AcceptChanges();
}
return View(getDoublons(dt_doublons));
}
private DoublonsViewModel getDoublons(DataTable dt_doublons)
{
DoublonsViewModel dblVM = new DoublonsViewModel()
{
ListeDoublons = new List<EntrepriseAndContacts>(),
dt_doublons = dt_doublons
};
for (int i = 0; i < dt_doublons.Rows.Count; i++)
{
EntrepriseAndContacts eac = new EntrepriseAndContacts();
eac.Id = Convert.ToInt32(dt_doublons.Rows[i]["id_entreprise"]);
eac.Rsoc = dt_doublons.Rows[i]["rsoc"].ToString();
eac.nb_doublons = Convert.ToInt32(dt_doublons.Rows[i]["nb_doublons"]);
eac.Etat_entreprise = Convert.ToInt32(dt_doublons.Rows[i]["importee"]);
eac.Etat_contact = Convert.ToInt32(dt_doublons.Rows[i]["importe"]);
eac.User_id = dt_doublons.Rows[i]["user_id"].ToString();
eac.CVI = dt_doublons.Rows[i]["cvi"].ToString();
eac.Nom = dt_doublons.Rows[i]["nom"].ToString();
eac.Prenom = dt_doublons.Rows[i]["prenom"].ToString();
eac.Mail = dt_doublons.Rows[i]["mail"].ToString();
dblVM.ListeDoublons.Add(eac);
}
return dblVM;
}
И ссылка:
foreach (var doublon in Model.ListeDoublons)
{
<tr>
<td class="center size-15 height-25">
<a href="@Url.Content("~/Doublons/Fiche")">@doublon.Rsoc</a>
</td>
<td class="center size-15 height-25">@doublon.nb_doublons</td>
</tr>
}
Я пытался вернуть false илипредотвратите событие события click, но представление «Fiche» больше не загружалось, поэтому в данном случае это не решение.Должно быть, я что-то не так делаю!
Редактировать: я добавил [HttpPost] до своего действия, но теперь представление не найдено.