Here is a solution that capitalises the "von" when it is placed before the family name in the output if it is not preceded by a given name (initial).
The input should still be B. von Surname as usual. All this can be done by modifying the relevant bibmacros. Indeed, biblatex already has code to capitalise the "von" in case you use a capitalised cite command like \Cite: We only remove the test for capitalisation and capitalise always.
The original definitions of the macros can be found in biblatex.def, the change comes down to replacing
\ifcapital
{\mkbibnameprefix{\MakeCapital{#3}}\isdot}
{\mkbibnameprefix{#3}\isdot}%
with
\mkbibnameprefix{\MakeCapital{#3}}\isdot
in the bibmacros name:family and name:family-given where the family name does not come after the given name. In both cases we only care about the true branch of \ifuseprefix, since otherwise the "von" is grouped with given names and either dropped or put after the family name.
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=numeric, useprefix=true]{biblatex}
\renewbibmacro*{name:family}[4]{%
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\mkbibcompletenamefamily{%
\ifdefvoid{#3}
{}
{\mkbibnameprefix{\MakeCapital{#3}}\isdot%
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibcompletenamefamily{%
\mkbibnamefamily{#1}\isdot}}}%
\renewbibmacro*{name:family-given}[4]{%
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\mkbibcompletenamefamilygiven{%
\ifdefvoid{#3}
{}
{\mkbibnameprefix{\MakeCapital{#3}}\isdot
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot
\ifdefvoid{#4}
{}
{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
\ifdefvoid{#2}
{}
{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibcompletenamefamilygiven{%
\mkbibnamefamily{#1}\isdot
\ifdefvoid{#4}
{}
{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#3}}}
{}
{\revsdnamepunct}%
\ifdefvoid{#2}
{}
{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
\ifdefvoid{#3}
{}
{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}}
\begin{filecontents}{\jobname.bib}
@article{abc,
author = {A. Lastname and B. von Surname},
title = {An article title 1},
journal = {Journal of First Articles},
year = 1999,
pages = {1-20},
}
@incollection{brandt,
author = {von Brandt, Ahasver and Erich Hoffmann},
editor = {Ferdinand Seibt},
title = {Die nordischen Länder von der Mitte des 11.~Jahrhunderts
bis 1448},
date = 1987,
booktitle = {Europa im Hoch- und Spätmittelalter},
series = {Handbuch der europäischen Geschichte},
number = 2,
publisher = {Klett-Cotta},
location = {Stuttgart},
pages = {884-917},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \textcite{brandt,abc}
\printbibliography
\end{document}
![Von Brandt and Hoffmann [2] and Lastname and Von Surname [1]](../../images/0bb25e9d5d499d05735aff3d9a622620.webp)
If you really want to distinguish between citations and the bibliography here, you can use a similar approach but with \AtBeginBibliography.
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=numeric, useprefix=true]{biblatex}
\letbibmacro{name:family:normal}{name:family}
\newbibmacro*{name:family:cap}[4]{%
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\mkbibcompletenamefamily{%
\ifdefvoid{#3}
{}
{\mkbibnameprefix{\MakeCapital{#3}}\isdot%
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibcompletenamefamily{%
\mkbibnamefamily{#1}\isdot}}}%
\letbibmacro{name:family-given:normal}{name:family-given}
\newbibmacro*{name:family-given:cap}[4]{%
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
\mkbibcompletenamefamilygiven{%
\ifdefvoid{#3}
{}
{\mkbibnameprefix{\MakeCapital{#3}}\isdot
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot
\ifdefvoid{#4}
{}
{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
\ifdefvoid{#2}
{}
{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibcompletenamefamilygiven{%
\mkbibnamefamily{#1}\isdot
\ifdefvoid{#4}
{}
{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
\ifboolexpe{%
test {\ifdefvoid{#2}}
and
test {\ifdefvoid{#3}}}
{}
{\revsdnamepunct}%
\ifdefvoid{#2}
{}
{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
\ifdefvoid{#3}
{}
{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}}
\renewbibmacro{name:family}{\usebibmacro{name:family:cap}}
\renewbibmacro{name:family-given}{\usebibmacro{name:family-given:cap}}
\AtBeginBibliography{%
\renewbibmacro{name:family}{\usebibmacro{name:family:normal}}%
\renewbibmacro{name:family-given}{\usebibmacro{name:family-given:normal}}}
\begin{filecontents}{\jobname.bib}
@article{abc,
author = {A. Lastname and B. von Surname},
title = {An article title 1},
journal = {Journal of First Articles},
year = 1999,
pages = {1-20},
}
@incollection{brandt,
author = {von Brandt, Ahasver and Erich Hoffmann},
editor = {Ferdinand Seibt},
title = {Die nordischen Länder von der Mitte des 11.~Jahrhunderts
bis 1448},
date = 1987,
booktitle = {Europa im Hoch- und Spätmittelalter},
series = {Handbuch der europäischen Geschichte},
number = 2,
publisher = {Klett-Cotta},
location = {Stuttgart},
pages = {884-917},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \textcite{brandt,abc}
\printbibliography
\end{document}
The output is the same in the MWE, but with a different style the output might be different.