На razor сингл пейдж не сделать, ибо razor - это рендеринг на стороне сервера. Можно реактом и не пользоваться, но без js не обойтись. Аяксом запросить частичное представление и результат вставить в блок модального окна.
В коде это примерно так будет
$.ajax({
type: "POST",
url: window.baseUrl + "Controller/Action",
data: params,
success: function (result) {
if (result) {
$(".modal").html(result);
}
})
public ActionResult Action(IncomingParameters params)
{
var model = Anything(params);
return PartialView("Action", model);
}