Я создал родительский и частичный вид. Я делаю ajax-вызов (используя функцию $.load()
), чтобы вызвать мой метод RacesName()
, чтобы получить значение, связанное с атрибутом data-raceid
моих кнопок. Затем я хочу обновить текст, сгенерированный @ViewBag.Name
этим значением.
Я получаю следующую ошибку
GET http://localhost:53987/Races/RacesName?id=103646584
500 (внутренний
Ошибка сервера)
Модель
public class clsStakes
{
public string Date { get; set; }
public int? RaceId { get; set; }
public string Race { get; set; }
}
Контроллер
[HttpGet]
public ActionResult Stakes(ClsStakes clsStakes)
{
return View(clsStakes);//return parent view
}
public ActionResult RacesName(ClsStakes clsStakes, int? id)
{
RacesDetails racesDetails = new RacesDetails();
ViewBag.Name = racesDetails.RaceName(id);
return View(clsStakes); // I think this part is creating problem.
}
Родительский вид
<div class="container">
@ViewBag.Name
<div id="mypartial"></div>
</div>
Частичное представление (отображается в элементе <div id="mypartial">
основного представления с использованием отдельного работающего вызова ajax)
<table class="table">
<tr>
<th>@Html.DisplayNameFor(m => m.Date)</th>
<th>@Html.DisplayNameFor(m => m.Race)</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Date)</td>
<td>
<button class="linkClass" type="button" data-raceid="@item.RaceId">@Html.DisplayFor(modelItem => item.Race)</button>
</td>
</tr>
}
</table>
Скрипт для получения расы
$('#mypartial').on('click', '.linkClass', function () {
var race = $(this).data("raceid");
var raceid = '@Url.Action("RacesName", "Stakes")?id=' + race;
$(this).load(raceid);
});
Наконец, процедура получения racename
public string RaceName(int? Id)
{
SqlParameter[] prms = new SqlParameter[1];
string sSQL;
var RaceName = "";
sSQL = "exec StakesRacesGetRaceDetails @Id";
prms[0] = new SqlParameter("@Id", SqlDbType.Int);
prms[0].Value = Id;
ds = clsUtilities.CreateCommandwithParams(sSQL, prms);
DataTable dataTable = ds.Tables[0];
if(dataTable.Rows.Count>0)
{
DataRow row = dataTable.Rows[0];
RaceName = Convert.ToString(row["race_header"]);
}
return RaceName;
}